Boost type_traits is_array

时间:2011-05-25 17:55:36

标签: c++ boost typetraits

我一直试图通过Boost类型特征标题,并且由于无数#define提供了强烈的不可读性,现在感觉很恶心。还有一些#define。

具体来说,我有兴趣弄清楚以下3个特征:如果类型T是数组,类或枚举。

任何人都可以帮忙建议破解明显疯狂背后的方法吗?就像你从一种类型,任何相关的阅读材料等中找出特征背后的理论一样。

1 个答案:

答案 0 :(得分:4)

is_array非常简单明了:

template<class T>
struct is_array{
  static const bool value = false;
};

template<class T, std::size_t N>
struct is_array< T (&)[N] >{
  static const bool value = true;
};

只是对引用数组类型的简单部分特化。

is_class有点复杂,依赖于重载解析以及类和结构拥有构造函数(或析构函数)的事实。由于我目前在iPod Touch上,我无法真正展示一个例子。一旦我再次访问PC,我就会编辑一个。

is_enum依赖于我认为的编译器内在函数,所以没有例子。

注意:这里的所有内容都来自内存,我可能错误的是enum。