例如:
template<unsigned number>
struct A
{
template<class T>
static void Fun()
{}
};
并且想要专门化 A<1>::Fun()
template<>
A<1>::Fun<int>()
{
/* some code here. */
}
不起作用。怎么做?谢谢。
例如:
template<unsigned number>
struct A
{
template<class T>
static void Fun()
{}
};
并且想要专门化 A<1>::Fun()
template<>
A<1>::Fun<int>()
{
/* some code here. */
}
不起作用。怎么做?谢谢。
首先,您忘记指定函数的返回类型 ( 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. */
}