2009-09-30 6 views
4

VC++ ne prend-il pas en charge les arguments de paramètres de modèle par défaut? Ce code simple:Paramètres de paramètres de modèle par défaut dans VC++

template <typename T=int> 
class X 
{ 
}; 

X x; 

me donne un 'error C2955: 'X' : use of class template requires template argument list'. Pas de plaintes à propos de la déclaration de modèle, cependant.

Qu'est-ce qui me manque ici? Un commutateur du compilateur peut-être?

Répondre

9

Je pense que vous devez toujours spécifier une liste de modèles vide, ou utilisez un typedef:

template <typename T=int> 
class X 
{ 
}; 

X<> x; 

typedef X<> XX; 
XX x; 
0

Votre question a déjà été answered very well. Cependant, je tiens à souligner que, chaque fois que vous vous demandez si c'est vous ou le compilateur, prenez un code coupé à Comeau's online compiler. Comeau est largement reconnu comme le compilateur C++ le plus conforme aux normes et a d'excellents messages d'erreur.

BTW, étonnamment, le compilateur ne coûte pas cher, donc si vous voulez la commodité de l'avoir sur votre machine, le prix ne devrait pas être dans votre chemin.

Questions connexes