例如:
template<unsigned number>
struct A
{
template<class T>
static void Fun()
{}
};
template<>
struct A<1>
{
template<class T>
static void Fun()
{
/* some code here. */
}
};
想要专门化A&lt; 1&gt; :: Fun()
template<>
template<>
void A<1>::Fun<int>()
{
/* some code here. */
}
似乎不起作用。怎么做?感谢。
答案 0 :(得分:2)
类模板的显式特化类似于常规类(它是完全实例化的,因此它不是参数类型)。因此,您不需要外部template<>
:
// template<> <== NOT NEEDED: A<1> is just like a regular class
template<> // <== NEEDED to explicitly specialize member function template Fun()
void A<1>::Fun<int>()
{
/* some code here. */
}
同样,如果您的成员函数Fun
不是函数模板,而是常规成员函数,则根本不需要任何template<>
:
template<>
struct A<1>
{
void Fun();
};
void A<1>::Fun()
{
/* some code here. */
}