Boost type_traits is_array

Fan*_*c23 5 c++ boost type-traits

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

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

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

Xeo*_*Xeo 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;
};
Run Code Online (Sandbox Code Playgroud)

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

is_class有点复杂,依赖于重载解析以及类和结构拥有构造函数(或析构函数)的事实。由于我目前使用的是 iPod Touch,因此我无法真正展示示例。一旦我再次使用电脑,我就会编辑其中一个。

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

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