type traits的原理
早期版本
<aside> 💡
type traits为一个类回答了五个问题
</aside>
泛化版本中所有的回答都是false
POD:指传统C中的struct(没有成员函数)
需要为自定义类实现type traits时可以为类特化一个_type_traits
如果自定义类中的默认构造 / 拷贝构造 / 拷贝赋值 / 析构函数使用编译器自动生成版本即可时,将回答设置为_true_type
C++11之后的版本
新版本中用户不需要再自己为类编写type traits
测试
type traits的实现
is_void
通过继承__is_void_helper判断是否是void
泛化版本的__is_void_helper:接收除void外的类型,继承自false_type
特化版本的__is_void_helper:void类型,继承自true_type
is_integral
实现原理与is_void类似