如何專門化或重載函數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;
}
你不能重載嗎? – avakar
是的。這是解決方案。謝謝。 – tim