#include <iostream>
using namespace std;
template<class reqT>
struct IsEqualType
{
template<class inputT>
bool operator() (inputT t)
{
if ( typeid(reqT) == typeid(inputT) )
return true;
else
return false;
}
};
template<class T>
void Prt(T t)
{
cout<< typeid(T).name()<<endl;
}
void main()
{
char k = 0;
cout<< IsEqualType<char>()(k)<<endl;
Prt(k);
char c = 0;
Prt(c);
}
==== output
1
char
char
结论: Prt调用的时候可以根据输入参数的类型,得到T的类型,如果强行指定,
如 int c = 0;
Prt<char>(c);
则T变为指定的类型
另外 结构中重载()操作符以后的用法是
StructName Var( ) (inputParam)
()是不可或缺的,否则编译器认为你在调用struct的构造函数