template T的类型判断

假设有如下代码:


template<typename T>
void test()
{
// if( T == Fun )
// {
// DoSomething();
// }

std::cout << sizeof(T) << std::endl;
}


如何判断函数内 T 类型是什么类型?
有没有函数获得类型名?
或者Boost库有没有这样的功能?
或者有没有其他方法解决这个问题。
...全文
1648 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zilaishuichina 2014-07-28
  • 打赏
  • 举报
回复

template<typename T>
void test()
{
	printf("test");
}
template <>
void test<int>()
{
	printf("test int");
}
mujiok2003 2014-07-28
  • 打赏
  • 举报
回复
引用 1 楼 lovesmiles 的回复:
C++中的typeid关键字 RTTI(运行时类型信息) 自己百度一下typeid, 但并不是所有的编译器都支持这个特性。
应该所有C++编译器都支持, 不过有些编译器可以关闭。
mujiok2003 2014-07-28
  • 打赏
  • 举报
回复 1
需要自己做类型匹配的代码都有设计问题。
mujiok2003 2014-07-28
  • 打赏
  • 举报
回复
幻夢之葉 2014-07-28
  • 打赏
  • 举报
回复
有一种方法是靠定义或者转换来判断是不是某类型,好像在C++ Primer里面说的还是其他?!
勤奋的小游侠 2014-07-27
  • 打赏
  • 举报
回复
C++中的typeid关键字 RTTI(运行时类型信息) 自己百度一下typeid, 但并不是所有的编译器都支持这个特性。
unituniverse2 2014-07-27
  • 打赏
  • 举报
回复
typeid是标准的实现方式,如果哪家编译器不支持就可以不考虑用那个编译器了。。 至于取出的名字有一定的参考意义(保证能识别)但是并没有统一
神奕 2014-07-27
  • 打赏
  • 举报
回复

#include <typeinfo>   // 头文件
神奕 2014-07-27
  • 打赏
  • 举报
回复

typeid(T).name();   // 返回T的类型名
lniwn 2014-07-27
  • 打赏
  • 举报
回复
楼主的需求用特化可以很好的解决唉 http://bbs.csdn.net/topics/390844538
碼上道 2014-07-27
  • 打赏
  • 举报
回复
使用函数特化吧,或者你的T都是可以自己定义的,使用trait提取的方法也行。
Jinhao 2014-07-27
  • 打赏
  • 举报
回复
用特化来解决

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧