为什么会出现此错误以及如何解决?
template<typename T>
struct foo {
template<size_t N>
void hello() {}
};
template<typename T>
struct bar {
void world() {
foo<T> f;
f.hello<0>(); //Error: Expected expression
}
};
答案 0 :(得分:17)
您需要使用template
消歧器,因此编译器将知道它将解析hello
作为模板成员函数的名称,以及随后的<
和{{1分隔模板参数的角括号:
>