Bonjour,
Mais quelles différences entre un template class et un template typename ?
Version imprimable
Bonjour,
Mais quelles différences entre un template class et un template typename ?
tu veux dire entre
etCode:
1
2 template <typename T>
?Code:
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>".
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.
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.