C++模板语法

标签 c++ templates

如何修复此语法错误?

struct A {
  template < typename T >
  void f () {}
};

template < typename C, typename U >
struct B {
  void g () {
    U::f < C > ();   // expected primary-expression before »>« token
  }
};

int main () {
  B<int,A> b;
  b.g ();
}

最佳答案

U 是依赖类型,因此您需要指定 f 是模板成员:

U::template f<C>();

UA 时,这仍然无效,因为 f 不是 static 的成员A

关于C++模板语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3621719/

相关文章:

c++ - 尝试对结构数组使用选择排序

c++ - 带有 pimpl 习语的模板化类不正确

c++ - 错误 : no member named 'rank_' in 'EndIndex'

c++ - 使用相同的构造函数参数初始化所有元素或 std::array

c++ - 为什么模板只能在头文件中实现?

c++ - 使用链表在栈中插入和删除

c++ - 重定向 APPCRASH 转储(或将其关闭)

c++ - 是否有比 boost::spirit::hold_any 更快的替代方法并且 hold_any 会导致内存泄漏

c++ - 在 C++ 中,如何在不使用 new 且不单独声明单个元素的情况下创建 `std::initializer_list<base *>`?

c++ - 使用模板删除/添加结构成员