func
特殊化がMyClassのすべてのインスタンスを処理するように、関数を特殊化またはオーバーロードするにはどうすればよいですか?たとえばfunc
、ライブラリアン関数であると仮定すると、変更することも、置き換えることもラップすることもできず、特殊化する必要があります。std::swap
func
#include <iostream>
template<typename T>
class MyClass
{
};
template<typename T>
void func(const T&)
{
std::cout << "Default" << std::endl;
}
// I don't want to copy this stuff for every instance of MyClass
template<>
void func<MyClass<int>>(const MyClass<int>&)
{
std::cout << "Specialization" << std::endl;
}
int main(int, char**)
{
func(int(0)); // "Default"
func(MyClass<int>()); // "Specialization"
func(MyClass<double>()); // "Default" but I want "Specialization" here
return 0;
}