Bonjour

J'ai une template struct que je spécialise, dans le cas où aucun argument n'est passé en paramètre du template :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Struct<int,char> a;
Struct<> b;
Mais je ne trouve pas ça très beau, j'aimerais pouvoir écrire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Struct<int,char> a;
Struct b;
Je me disais qu'en passant par un alias je pourrais faire ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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

Quelqu'un aurait une solution ?

Merci !