如何在模板类中专门化模板成员函数?

时间:2013-07-06 13:31:55

标签: c++ templates specialization

例如:

template<unsigned number>
struct A
{
    template<class T>
    static void Fun()
    {}
};

想要专门化A&lt; 1&gt; :: Fun()

template<>
A<1>::Fun<int>()
{
    /* some code here. */
}

不起作用。怎么做?感谢。

1 个答案:

答案 0 :(得分:5)

首先,您忘记指定函数的返回类型(void)。其次,你需要两个 template<>:一个因为你明确地专门化了类模板,一个因为你明确地专门化它的成员函数模板。

因此,这是正确的语法:

template<> // Because you are explicitly specializing the A class template
template<> // Because you are explicitly specializing the `Fun()` member template
void A<1>::Fun<int>()
{
    /* some code here. */
}