类型特征萃取.PDF

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
类型特征萃取

第 3章 类型特征萃取 在本章中,我们将要学习模板元编程工具 type_traits,它以库的方式实现了人们原本以 为必须扩展 C++语言才能实现的类型特征萃取功能,是泛型编程和模板元编程所必需的基础设施。 目前 type_traits 已经成为了 C++11/14 标准的一部分(头文件type_traits, C++11.20.9),但 boost.type_traits 并不完全与标准一致,本章主要介绍符合标准的部分。 type_traits位于名字空间 boost,需要包含头文件boost/type_traits.hpp,即: #include boost/type_traits.hpp using namespace boost; 3.1 概述 type_traits 库提供一组特征(traits)类——即元函数,可以在编译期确定类型(元 数据)是否具有某些特征,例如是否是原生数组、是否是整数、是否重载了 operator。此外 它还提供了判断类型之间关系和操作类型的元函数,可以检查两个类型是否是同一个类型,或者 为类型增添或移除 const、volatile 等修饰词。因为这些特征类都是元函数,所以它们都在编 译期执行,不会存在任何运行时的效率损失。① 根据返回类型 type_traits 库里的元函数可分为以下两大类。 检查元数据属性的值元函数 :以 ::value返回一个 bool 值或者一个整数。 ① Boost 自带文档中把type_traits 库操作的对象称为 type (类型),但作者认为名字太过于平淡而不 突出,因此依据模板元编程统称为元数据,这样有利于保持概念的一致性,希望读者阅读时注意。 C++11/14 高级编程——Boost 程序库探秘(第 3 版) 56 第 3 章 类型特征萃取 操作元数据的标准元函数 :对元数据进行计算,以::type返回一个新的元数据。 type_traits 库中以 is_和 has_开头的元函数均属于值元函数,其他则属于标准元函数, 但少数元函数也有例外。 根据元函数实现的功能 type_traits 库里的元函数可分为以下 7类。 检查元数据的类别 :均以 is_开头,都是值元函数。 检查元数据的属性 :大部分以 is_和 has_开头,都是值元函数。 检查元函数之间的关系 :均以 is_开头,都是值元函数。 检查操作符重载 :均以 has_开头,都是值元函数。 转换元数据 :都是标准元函数,返回转换后的类型。 解析函数元数据 :都是非标准元函数。 用指定的对齐方式组合类型 :本书暂不做介绍; 在接下来的数节中,我们将参照 C++11/14 标准,以功能分类逐个介绍 type_traits 库 里的元函数。 3.2 元数据类别 C++里有许多内建类型,同时还可以自定义任意类型,它们都是模板元编程里可以操作的元 数据,使用 type_traits 库里的元函数可以对它们分门别类。 被检查的元数据前可以有 const、volatile 关键字修饰,元函数使用 ::value返回 bool 类型的检查结果。 3.2.1 基本类别 基本类别(primary type categories)描述了 C++里最基本的类型体系。 检查简单类别 检查简单 C++类别的元函数有以下三个。 is_integralT :检查 T 是否

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档