Bonjour,
Mais quelles différences entre un template class et un template typename ?
Bonjour,
Mais quelles différences entre un template class et un template typename ?
tu veux dire entre
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 template <typename T>
?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 template <class T>
Si c'est ça, hé bien aucune.
Généralement, et je crois que c'est une convention plus ou moins suivie, je considère que quand il y a un typename c'est que n'importe type est susceptible d'être donné en paramètre à ta fonction ou classe template, alors qu'avec class j'ai tendance à penser qu'une classe/structure est attendue.
Typiquement, je verrais une fonction max template avec typename T et une fonction template qui appellerait une fonction membre foo() avec class T, parce que justement on appelle une fonction membre et j'indiquerai cela via le "template <class T>".
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
Bonjour,
Merci pour ta réponse. Mais les choses deviennent plus fumeuses avec des constructeurs "explicit" pour des "template de class" comme avec des "template de typename".
Je signale toutefois que ce n'est pas une question pour laquelle j'ai une réponse spontanée.
C'est bizarre le C++, hein ?
Cordialement.
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
C'est un peu plus subtil que ça. J'avais posté ce message pour répondre à une question similaire.
Bonjour,
Mouai c'est subtile la différence quand elle s'explique par des "tendances à". Si je comprends bien on dit typename pour des types prédéfinis et class pour des structures ou des classes. Et si on fait l'inverse par erreur que se passe-t-il ?
Salut.
Ah effectivement Montag oui.
Pour dj.motte, si dans le cas pointé par Montag, tu mets typename au lieu de class, ça ne compilera pas. C'est le seul cas : paramètre template d'une fonction/classe template.
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
Partager