作者:朱金灿
来源:https://blog.csdn.net/clever101
C++11中的std::is_same可以判断输入的类型是否是指定的模板类型。测试代码如下:
template<typename T>
T* PrintType(int* x)
{
if (std::is_same<T, int>::value) {
std::cout << "int type" << std::endl;
return reinterpret_cast<T*>(x);
}
else {
std::cout << "not int type" << std::endl;
return nullptr;
}
}
template<typename T>
const T* PrintType(const int* x)
{
if (std::is_same<T, int>::value) {
std::cout << "const int type" << std::endl;
return reinterpret_cast<const T*>(x);
}
else {
std::cout << "not const int type" << std::endl;
return nullptr;
}
}
void TestTemplateType()
{
int x = 5;
const int y = 6;
PrintType<int>(&x);
PrintType<double>(&x);
PrintType<int>(&y);
PrintType<double>(&y);
}
int _tmain(int argc, _TCHAR* argv[])
{
TestTemplateType();
getchar();
return 0;
}
运行结果如下: