Bonjour,

J'ai trois structures :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
struct Cat { const static unsigned mask = 1; };
struct Dog { const static unsigned mask = 2; };
struct Cow { const static unsigned mask = 4; };
J'aimerais créer une macro qui prendrait des types en argument et qui :
- en ferait un enum
- créerait un tableau avec les maks des types

Rien compris ? X) Un petit exemple sera plus parlant. J'aimerais pouvoir écrire :

Ceci me créerait une structure :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
struct
{
    enum {Dog,Cow,Cat};
    unsigned tab[3] = {2,4,1};
} test;
Pour l'instant j'ai écrit la macro suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
#define macro(Ts...)                    \
struct                                  \
{                                       \
    enum { Ts,count };                  \
    unsigned tab[count] = {Ts::mask};   \
} test;
C'est bon pour l'enum, mais pour tab c'est pas encore ça il doit y avoir un problème d'expanded pack quelque part, mais je ne sais pas comment résoudre ça !

Des suggestions ?