Typename - C++

Résolu
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011 - 8 août 2005 à 14:53
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009 - 8 août 2005 à 16:48
les typenames, a quoi ça sert et pourquoi les utiliser?

Qqn saurait il donner un exemple concret d'utilisation des 'typename'



typename T a;

ou

typedef typename namespace1::value_type MyValType;





(et pas ceux dans les template en lieu et place du mot clef 'class',

les template, une fois comprises sont triviales...)


merci
___________________________________________________________
Magicalement
Nono

6 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
8 août 2005 à 15:14
http://casteyde.christian.free.fr/online/cours_cpp/x4836.html

Encore lié aux templates mais pas pour la même raison
3
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
8 août 2005 à 15:57
Un détail en passant...

template< template< typename Y > class X >
struct classe_ok {};

template< template< typename Y > typename X >
struct classe_nok {};

Ca compile chez vous ?

Cordialement,
X.
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
8 août 2005 à 16:17
ok Vecchio



mais quelle utilité?



ptt ex pratique stp



X> V tester ça

___________________________________________________________
Magicalement
Nono
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
8 août 2005 à 16:28
Avec DevCpp j'ai du passer un vector en argument, et il me semble que
sans typename, il compilait pas. Car j'ai pas mis typename avant
d'avoir eu un message d'erreur.



template <class _T>

block<_T>* Parser(arg1, const typename std::vector< op::operator_base* > & _op_list, arg2);





Autre genre: sans typename => erreur.

typename std::vector< std::pair<std::string, int> >::const_iterator it = this->fn_configs.begin();



Faut pas me demander pourquoi :)

++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
8 août 2005 à 16:32
au test, ça passe pas;



je ne crois pas que

les templates puissent s'imbriquer ainsi


mais par contre,

ds une classe template de type X,

rien ne t'empeche de creer une fonction template pour Y....
___________________________________________________________
Magicalement
Nono
0
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
8 août 2005 à 16:48
Merci pour ta réponse. Le probleme n'est pas l'imbrication, c'est bien cette écriture (la première). C'est peut être la norme C++ qui veut que le seconde écriture (avec deux typename) n'est pas autorisée.

luhtor > tes erreurs sont un peu louches... ;-)
0
Rejoignez-nous