例如:
template<unsigned number>
struct A
{
template<class T>
static void Fun()
{}
};
想要专门化A&lt; 1&gt; :: Fun()
template<>
A<1>::Fun<int>()
{
/* some code here. */
}
不起作用。怎么做?感谢。
答案 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. */
}