spécialisation de template avec aucun argument : se passer des <>
Bonjour :oops:
J'ai une template struct que je spécialise, dans le cas où aucun argument n'est passé en paramètre du template :
Code:
1 2 3 4 5 6 7 8 9 10 11
| template <typename...Ts>
struct Struct
{
int a;
};
template <>
struct Struct<>
{
int b;
}; |
Quand je déclare les différentes versions dans mon main, ça donne :
Code:
1 2
| Struct<int,char> a;
Struct<> b; |
Mais je ne trouve pas ça très beau, j'aimerais pouvoir écrire :
Code:
1 2
| Struct<int,char> a;
Struct b; |
Je me disais qu'en passant par un alias je pourrais faire ça :
Code:
1 2 3 4
| template <typename...Ts>
using TMP = Struct<Ts...>;
using TMP = Struct<>; |
Mais en fait non X) Pas moyen non plus de faire la même chose en déclarant deux struct : l'une template et l'autre non. Pourtant, j'aimerais vraiment conserver le même nom ! Et je vais pas passer par une macro, quand même :aie:
Quelqu'un aurait une solution ? :mrgreen:
Merci !