Ça ne se compile pas :
template<class X> struct A {
template<int I> void f() {}
};
template<class T> void g()
{
A<T> a;
a.f<3>(); // Compilation fails here (Line 18)
}
int main(int argc, char *argv[])
{
g<int>(); // Line 23
}
Le compilateur (gcc) dit :
hhh.cpp : Dans la fonction 'void g()' :
hhh.cpp:18 : erreur : expression primaire attendue avant le jeton ')
hhh.cpp : Dans la fonction 'void g() [avec T = int]' :
hhh.cpp:23 : instancié à partir d'ici
hhh.cpp:18 : error : invalid use of member (avez-vous oublié le '&' ?)
Quelqu'un peut-il expliquer pourquoi ? Existe-t-il un moyen de le faire fonctionner ?