Boost type_traits is_array
Boost type_traits is_array
我一直在尝试浏览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
依赖于编译器内部,所以没有任何例子。
注意:这里的所有内容都来自记忆,我可能对枚举错误。
相关文章:
- Why is UINT32_MAX + 1 = 0?
- C++错误:"error: int aaa::bbb is protected within this context"
- 创建具有 new in 函数和"this is nullptr"异常的对象
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- C++11 中不同类型的对象的 std::array 的替代方案
- constexpr begin of a std::array
- C++如果必须在编译时确定大小,std::array 有什么意义?
- Is !NaN not a NaN?
- 警告的原因是什么:"when type is in parentheses, array cannot have dynamic size"?
- "error: subscripted value is not an array, pointer, or vector",我正在使用字符串
- glBufferData 失败,并显示: "Array object is not active."
- 使用多个文件时"array bound is not an integer constant before ']' token"
- VC++ 2010 "array is not a member of std"错误
- "except that a default constructed array is not empty"是什么意思?
- 为什么我会收到错误"Array type Item[1000] is not assignable"?
- constexpr with std::array - "Non-type template argument is not a constant expression"
- 使用枚举类值为数组编制索引时出现"Array subscript is not an integer"错误
- 获取错误"array bound is not an integer constant before ']' token"
- 在运行时创建结构时"array bound is not an integer constant"
- 叮当抱怨:"pointer is initialized by a temporary array"