question sur les template
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:
Code:
1 2 3 4 5 6
| template<class F,class X>
struct twice
{
typedef typename F::template apply<X>::type once;
...
}; |
En fait, j'aimerais provoquer une erreur en omettant le mot clé template. Comme ici par ex.
Code:
1 2 3 4 5 6
| template<class F,class X>
struct twice
{
typedef typename F::apply<X>::type once;
...
}; |
Le pb est que ca fonctionne parfaitement. pas d'erreur de compile.
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".
Code:
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>();
} |
Mais si on fait:
Code:
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>();
} |
Ca compile parfaitement.
Pouvez vous me donner un exemple où il est nécessaire de mettre template, devant le dependent name sinon ça plante.
merci