【发布时间】:2010-12-22 20:28: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: error: ')' 标记之前的预期主表达式
hhh.cpp:在函数'void g() [with T = int]'中:
hhh.cpp:23: 从这里实例化
hhh.cpp:18: 错误:无效使用成员(你忘记了 '&' 吗?)
谁能解释这是为什么?有没有办法让它工作?
【问题讨论】:
-
编译器抱怨什么?
-
它对我有用。你是如何调用 g() 的? (正如其他人所问的那样,您遇到了什么错误?)