1

例如:

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

并且想要专门化 A<1>::Fun()

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

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

4

1 回答 1

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. */
}
于 2013-07-06T13:33:43.880 回答