__type_traits机制允许针对不同的型别属性,在编译时期完成函数派送

iterator_traits负责萃取迭代器特性,而__type_traits负责萃取型别特性——》

这里型别指no-trival

一个简单的判断标准是class内含指针成员,并且对它进行内存动态配置

1
2
3
4
5
__type_traits<T::has_trivial_default_constructor
__type_traits<T::has_trivial_copy_constructor
__type_traits<T::has_trivial_assignment_operator
__type_traits<T::has_trivial_destructor
__type_traits<T::is_POD_type //Plain Old Data

我们希望通过以上型别返回结果进行函数派送,而编译器只有面对class object形式的参数才会做参数推导

因此应该传回

1
2
strcut __true_type {};
struct __false_type {};