1.模版特化的运用,外加一个运算符重载
#include <iostream>
template<typename T1, typename T2>
struct is_same_type11
{
operator bool()
{
return false;
}
};
template<typename T1>
struct is_same_type11<T1, T1>
{
operator bool()
{
return true;
}
};
int main()
{
bool b1 = is_same_type11<int, int>(); //调用第二个
bool b2 = is_same_type11<int, float>(); //调用第一个
system("pause");
return 0;
}
这里详解一下,struct is_same_type11<T1, T1>是模板的特化,当参数一样时,调用第二个。
为啥会调用bool操作呢?is_same_type11<int, int>()是定义一个临时对象,赋值给b1时会将该类型转为bool,这里就会调用bool操作符。如果if( is_same_type11<int, int>() )这么写,也会调用bool操作。