Duplicata possible :
Différence entre les mots-clés 'typename' et 'class' dans les modèles en C++.
Lorsqu'on définit un modèle de fonction ou un modèle de classe en C++, on peut écrire ceci :
template <class T> ...
ou on peut écrire ceci :
template <typename T> ...
Y a-t-il une bonne raison de préférer l'un à l'autre ?
J'ai accepté la réponse la plus populaire (et la plus intéressante), mais la vraie réponse semble être "Non, il n'y a pas de bonne raison de préférer l'une à l'autre."
- Ils sont équivalents (à l'exception de ce qui est indiqué ci-dessous).
- Certaines personnes ont des raisons de toujours utiliser
typename
. - Certaines personnes ont des raisons de toujours utiliser
class
. - Certaines personnes ont des raisons d'utiliser les deux.
- Certaines personnes ne se soucient pas de savoir lequel elles utilisent.
Notez, cependant, qu'avant C++17, dans le cas de modèle de référence paramètres, utilisation de class
au lieu de typename
était nécessaire. Voir La réponse de l'utilisateur1428839 ci-dessous. (Mais ce cas particulier n'est pas une question de préférence, c'était une exigence de la langue).
6 votes
Je pense que dans ce cas, il aurait pu être justifié de rassembler toutes les réponses et d'accepter votre propre nouvelle réponse au lieu de mettre la réponse dans le texte de la question.
10 votes
Ce n'est pas vraiment un doublon. L'une demande laquelle est préférable. L'autre demande les différences.
25 votes
Je ne vois pas comment il pourrait s'agir d'une duplication d'une question posée plus d'un an plus tard.
1 votes
Soyez cohérent, c'est tout ce que je dirais. Moi, je suis un garçon typographe, mais c'est à vous de voir.
0 votes
Si le type que j'attends est un type de données par défaut tel que
int
,float
,double
etc., alors normalement j'aurai tendance à utilisertypename
D'un autre côté, si le modèle est censé ou a des raisons d'accepter des classes, des structures ou des types définis par l'utilisateur, j'aurai tendance à utiliserclass
. Il s'agit uniquement d'une référence personnelle qui me permet de distinguer l'objectif de deux modèles, même si la syntaxe des mots-clés est interchangeable dans 95 % des cas.4 votes
Ce "double éventuel" a été demandé en 2008. l'"original" a été demandé en 2010. et ils l'ont remarqué en 2012. qualité.