【发布时间】:2019-10-20 18:04:28
【问题描述】:
大多数类型特征都是使用结构和模板部分(或完全)特化来制作的。例如std::is_same 实现为
template<typename>
struct is_same : false_type {};
template<typename T>
struct is_same<T, T> : true_type {}; // partial specialization
用法是
bool are_equal = std::is_same<T, U>::value;
或
.. = std::is_same_v<T, U>;
这两个都有点难看。 起初我认为这是唯一的解决方案,然后我发现变量也可以部分专门化(而函数不能)。 类型转换特征不能(显然)是变量,但是对于“信息”特征,为什么这不会比结构更好?
template<typename>
inline constexpr bool is_same = false;
template<typename T>
inline constexpr bool is_same<T, T> = true;
然后
bool are_equal = std::is_same<T, U>;
【问题讨论】:
标签: c++ typetraits