1. 类型萃取的作用
类型萃取使用模板技术来萃取类型(包含自定义类型和内置类型)的某些特性,用以判断该类型是否含有某些特性,从而在泛型算法中来对该类型进行特殊的处理用来提高效率或者其他。例如:在STL中的destory算法根据函数的参数类型的特性:是否有trivial destructor来选择对应的策略来进行destory,如果为内置类型,则不调用该类型的destructor,否则对迭代器范围内的对象调用destructor来进行destory。
template <typename ForwardIterator>
inline void destory(ForwardIterator first, ForwardIterator last)
{
__destory(first, last, value_type(first));
}
template <typename ForwardIterator, typename T>
inline void __destory(ForwardIterator first, ForwardIterator last, T* )
{
typedef typename type_traits<T>::has_trivial_destructor trivial_destructor;
__destory_aux(first, last, trivial_destructor());
}
template <typename ForwardIterator>
inline void __destory_aux(ForwardIterator first, ForeardIterator last, __false_type);
template <typename ForwardIterator>
inline void __destory_aux(ForwardIterator first, ForeardIterator last, __true_type);