如何专门化 class 模板的静态函数?
How to specialize a static function of a class template?
当我尝试写这样的东西时:
#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();
}
我遇到编译错误:
专攻整个 class 就可以了。我只想知道有没有办法只专门化静态函数?
您应该在声明中仅指定一次 static
关键字。
试试这个:
template<>
void A<int>::doit()
{
std::cout << "int" << std::endl;
}
template<>
void A<double>::doit()
{
std::cout << "double" << std::endl;
}
当我尝试写这样的东西时:
#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();
}
我遇到编译错误:
专攻整个 class 就可以了。我只想知道有没有办法只专门化静态函数?
您应该在声明中仅指定一次 static
关键字。
试试这个:
template<>
void A<int>::doit()
{
std::cout << "int" << std::endl;
}
template<>
void A<double>::doit()
{
std::cout << "double" << std::endl;
}