117 C++ 萃取 traits 技术概念,范例

本文介绍了C++11中的类型萃取技术,展示了如何通过模板和cppreference库中的接口获取类型信息,包括是否是void、class、object等,以及迭代器种类的提取。
摘要由CSDN通过智能技术生成

类型萃取概述 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;//类型是否 是 void
	cout << "is_class = " << is_class<T>::value << endl;//类型是否 是 一个class
	cout << "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;//是否有虚析构函数

}

迭代器萃取概述

已知,迭代器的种类比较多,我们也可以通过萃取技术 得到 迭代器的具体种类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值