Bonjour
Dans le livre d'Abrahams, il est écrit:
The C++ standard requires the template keyword when we use a dependent name that refers to a member template.
(cf p 49)
Il donne en fait un exemple:
En fait, j'aimerais provoquer une erreur en omettant le mot clé template. Comme ici par ex.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 template<class F,class X> struct twice { typedef typename F::template apply<X>::type once; ... };
Le pb est que ca fonctionne parfaitement. pas d'erreur de compile.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 template<class F,class X> struct twice { typedef typename F::apply<X>::type once; ... };
Ensuite, dans l'annexe page 319.
"The template keyword is required before dependent names accessing member template via ., -> or :: qualification. in the following example, convert and base depend on T".
Mais si on fait:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 template<class T> void f(T& x, T*y) { int n=x.template convert<int>(); int m=y->template convert<int>(); }
Ca compile parfaitement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 template<class T> void f(T& x, T*y) { int n=x.template convert<int>(); int m=y->convert<int>(); }
Pouvez vous me donner un exemple où il est nécessaire de mettre template, devant le dependent name sinon ça plante.
merci
Partager