模板化类中成员函数的模板特化

时间:2017-02-09 17:49:38

标签: c++ templates template-specialization c++17

我有一个模板化的类foo,它具有模板化的成员函数。我对模板化函数的特化有问题。

template<typename T, int x...>
class foo_c
{
    ...
    template<int n>
    int foo() { return n; }
};
template<>
template<>
int foo_c<int,1>::foo<0>() { return 0; }

上面的代码编译,但我需要foo_c是通用的,当向模板添加任何东西时,我得到编译器错误。

问题:

  • 我该如何解决这个问题?
  • 编译器在专业化时遵循的规则是什么?

修改

尝试

template<typename T, int x, int y>
template<>
int foo_c<T,x,y>::foo<0>() { return 0; }

错误

error: invalid explicit specialization before '>' token
error: enclosing class templates are not explicitly specialized
error: expected initializer before '<' token

0 个答案:

没有答案