__type_traits 没有搞懂啊
__type_traits 没有搞懂啊结合函数destroy来理解具体看代码:template <class ForwardIterator>inline void destroy(ForwardIterator first, ForwardIterator last) { __destroy(first, last, value_type(first));}得到T*后, 内部调用__destroy函数,代码如下:template <class ForwardIterator, class T>inline void __destroy(ForwardIterator first, ForwardIterator last, T*) { typedef typename __type_traits<T>::has_trivial_destructor trivial_destructor; //这个类型是_false_type __destroy_aux(first, last, trivial_destructor());}函数__destroy_aux有两个版本,代码如下,由于在__destroy中获得类型是_false_type ,传入的对象也是:_false_type(),自然会调用 版本void__destroy_aux(ForwardIterator first, ForwardIterator last, __false_type) 版本1:template <class ForwardIterator>inline void__destroy_aux(ForwardIterator first, ForwardIterator last, __false_type) { for ( ; first < last; ++first) destroy(&*first);}版本2:template <class ForwardIterator> inline void __destroy_aux(ForwardIterator, ForwardIterator, __true_type) {}发现没有, 只会进入版本呢1,不会进入版本2. 什么情况下会进入版本2呢??