本文主要是介绍117 C++ 萃取 traits 技术概念,范例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
类型萃取概述 type traits
属于泛型编程方便的技术,在stl源码中,类型萃取技术用的很多。
萃取:提取一些信息出来。
C++11 标准库里 提供了很多类型萃取的接口,这些接口起始就是类模版;
这些萃取的接口在:
Metaprogramming library (since C++11) - cppreference.com
类型萃取范例
//通过萃取接口中的value值为true ,false 就可以萃取出很多有用信息。template <typename T>
void printTraitsInfo(const T &t) {cout << "要萃取的类型名字:" << typeid(T).name() << endl;cout << "is_void = " << is_void<T>::value << endl;//类型是否 是 voidcout << "is_class = " << is_class<T>::value << endl;//类型是否 是 一个classcout << "is_object = " << is_object<T>::value << endl;//类型是否 是 一个对象类型cout << "is_pod = " << is_pod<T>::value << endl;//是否普通类(只包含成员变量,不包含成员函数)cout << "is_default_constructible = " << is_default_constructible<T>::value << endl;//是否有缺省的构造函数cout << "is_copy_constructible = " << is_copy_constructible<T>::value << endl;//是否有copy构造函数cout << "is_move_constructible = " << is_move_constructible<T>::value << endl;//是否有移动构造函数cout << "is_destructible = " << is_destructible<T>::value << endl;//是否有析构函数cout << "is_polymorphic = " << is_polymorphic<T>::value << endl;//是否有虚函数cout << "has_virtual_destructor = " << has_virtual_destructor<T>::value << endl;//是否有虚析构函数}
迭代器萃取概述
已知,迭代器的种类比较多,我们也可以通过萃取技术 得到 迭代器的具体种类
这篇关于117 C++ 萃取 traits 技术概念,范例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!