Boost type_traits is_array

Boost type_traits is_array

本文关键字:array is traits Boost type      更新时间:2023-10-16

我一直在尝试浏览Boost类型的traits标头,考虑到无数#define提供的强烈的不可读性,我现在感到非常恶心。然后是更多的#define。

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

有人能提出一些破解这种明显疯狂背后方法的方法吗?就像你如何从类型、任何相关的阅读材料等中找出特征背后的理论一样。

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,我无法真正展示一个例子。一旦我再次访问电脑,我就会在中编辑一个。

我相信is_enum依赖于编译器内部,所以没有任何例子。

注意:这里的所有内容都来自记忆,我可能对枚举错误。