如何专门化类模板的静态函数?

时间:2015-08-10 10:27:40

标签: c++ templates template-specialization

当我尝试写这样的东西时:

#include <iostream>

template <class T>
class A
{
public:
    static void doit();
};

template <>
static void A<int>::doit() 
{
    std::cout << "int" << std::endl;
}

template <>
static void A<double>::doit()
{
    std::cout << "double" << std::endl;
}

int main()
{
    A<int>::doit();
    A<double>::doit();
}

我收到了编译错误: The capture of error message

专业整个班级都可以。我只是想知道有没有办法专门化静态函数?

1 个答案:

答案 0 :(得分:4)

您只应在声明中指定static个关键字一次。

试试这个:

template<>
void A<int>::doit() 
{
    std::cout << "int" << std::endl;
}

template<>
void A<double>::doit()
{
    std::cout << "double" << std::endl;
}