测试2个类型相同的方法

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

也许有的时候,我们需要测试2个类型是否相同,恩,有几种方法你可以参考以下:

1、利用typeid,也许这是最常见的方法了:

template<class T, class U>

struct same_type

{

public:

operator bool()

{

return typeid(T())==typeid(U());

}

};

2、利用模板特化:

template <typename T, typename U>

struct same_type

{

private:

template<typename>

struct In

{ enum { value = false }; };

template<>

struct In<T>

{ enum { value = true }; };

public:

enum { value = In<U>::value };

};

3、利用Loki库里面的TypeList:

template <typename T, typename U>

struct same_type

{

public:

operator bool()

{

return Loki::IndexOf<Loki::TYPELIST_2(T,U),U>==0;

}

};

嗬嗬,当然了,肯定也有别的方法,提出来一起分享:)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航