这个不能编译:
编译器(gcc)报错:
hhh.cpp: 在函数 'void g()' 中: hhh.cpp:18: 错误:在 ')' 之前预期的主表达式 hhh.cpp: 在函数 'void g() [with T = int]' 中: hhh.cpp:23: 在此处实例化 hhh.cpp:18: 错误:成员的使用无效(是否忘记了'&'?)
有人能解释为什么会出现这个错误吗?有没有办法让它正常工作?
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
}
编译器(gcc)报错:
hhh.cpp: 在函数 'void g()' 中: hhh.cpp:18: 错误:在 ')' 之前预期的主表达式 hhh.cpp: 在函数 'void g() [with T = int]' 中: hhh.cpp:23: 在此处实例化 hhh.cpp:18: 错误:成员的使用无效(是否忘记了'&'?)
有人能解释为什么会出现这个错误吗?有没有办法让它正常工作?