我有错误“预期'int'之前的primary-expression”和“expected';'在'int'之前,在这段代码中,有人知道为什么吗?
struct cpu
{
template<class T> static void fce() {}
};
template<class _cpu>
struct S
{
void fce()
{
_cpu::fce<int>(); //error: expected primary-expression before 'int'
//error: expected ';' before 'int'
}
};
int main()
{
S<cpu> s;
s.fce();
}
答案 0 :(得分:3)
_cpu::template fce<int>();
尝试以上方法。
由于_cpu是template
参数,编译器无法识别fce
可能是member function
的名称 - 因此它将<
解释为小于template
符号。
为了使编译器能够识别函数模板调用,请添加{{1}}量词: