Cela ne compile pas:fonction membre modèle de classe modèle appelé de fonction de modèle
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: In function 'void g()':
hhh.cpp:18: error: expected primary-expression before ')' token
hhh.cpp: In function 'void g() [with T = int]':
hhh.cpp:23: instantiated from here
hhh.cpp:18: error: invalid use of member (did you forget the '&' ?)
Quelqu'un peut-il expliquer pourquoi il en est? Y a-t-il un moyen de le faire fonctionner?
Et l'erreur est? – Yacoby
De quoi se plaint le compilateur? – Romain
Ça marche pour moi. Comment invoquez-vous g()? (et quelle erreur obtenez-vous, comme d'autres l'ont demandé?) – philsquared