我知道下面的代码是一个类的部分专门化:
template <typename T1, typename T2>
class MyClass {
…
};
// partial specialization: both template parameters have same type
template <typename T>
class MyClass<T,T> {
…
};
我也知道 C + + 不允许函数模板部分专门化(只允许全部)。但是我的代码是否意味着我已经为一个/同一类型的参数部分地专门化了函数模板?因为它适用于 MicrosoftVisualStudio2010Express!如果没有,那么请您解释一下部分专业化的概念好吗?
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
template <typename T1, typename T2>
inline T1 max (T1 const& a, T2 const& b)
{
return a < b ? b : a;
}
template <typename T>
inline T const& max (T const& a, T const& b)
{
return 10;
}
int main ()
{
cout << max(4,4.2) << endl;
cout << max(5,5) << endl;
int z;
cin>>z;
}