8

为什么会出现此错误,我该如何解决?

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
  }
};
4

1 回答 1

20

您需要使用template消歧器,因此编译器将知道它应解析hello为模板成员函数的名称,以及随后的<>作为分隔模板参数的尖括号:

f.template hello<0>();
//^^^^^^^^
于 2013-05-12T15:10:13.837 回答