通过模板判断类类型的代码,在vc++2005的问题,各位大大来看看

htqx 2006-12-12 05:50:06
template<class T>
class IsClass {
private:
typedef char One;
typedef struct{char s[2];} Two;
template<class C> static One func( int C::* );
template<class C> static Two func( ... );
public:
//为何在vc++2005如果加上IsClass::就不能通过编译
//error C2783: “IsClass<T>::Two IsClass<T>::func(...)”: 无法为“C”推导 模板 参数
enum { YES = sizeof ( /* IsClass:: */ func<T>(0) ) == 1 };
enum { NO = !YES };
};

...全文
167 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pongba 2006-12-15
  • 打赏
  • 举报
回复
事实是VC05的实现有问题。
theendname 2006-12-15
  • 打赏
  • 举报
回复
template<T> static One func( int C::* );
template<T> static Two func( ... );
htqx 2006-12-15
  • 打赏
  • 举报
回复

我现在就想知道事实是什么,而不是承认一起事件.
taodm 2006-12-13
  • 打赏
  • 举报
回复
你在自己类内,为啥没事想加IsClass??
IsClass问题不是class,是template,你加IsClass<T>还差不多。不是所有编译器都支持在模板内部可以省略<T>的。
taodm 2006-12-13
  • 打赏
  • 举报
回复
那你就不加呀。这也没啥好多讨论的,各编译处理不同,就只好承认现实。
htqx 2006-12-13
  • 打赏
  • 举报
回复
楼上,问题不是不加不行,是加了反而不行。

IsClass<T>:: //这个也一样的(不行),我试过。
cmail 2006-12-12
  • 打赏
  • 举报
回复
mark.
不知道什么原因,gcc没问题。

64,646

社区成员

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

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