提高type_traits is_array

问题描述

| 我一直在尝试通过Boost类型特征标头,由于无数#define提供的强烈的不可读取性,现在我感到很恶心。然后再#define。 具体来说,我有兴趣弄清楚以下三个特征:类型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,因此我无法真正显示示例。我将在再次访问PC后立即对其进行编辑。
is_enum
依赖于我相信的编译器内部函数,因此此处没有示例。 注意:这里的一切都来自内存,我可能会用枚举错误。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...