- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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 是否
您可能关注的文档
- 第12课时其他植物激素.DOC
- 第13讲英国的司法制度新窗口.PPT
- 第04章药效学影响因素.PPT
- 郑州热岛效应研究与人体舒适度评价应用生态学报.PDF
- 第19课时群落的演替-资源.DOC
- 第1z卷第5期电子科学学刊v1lzNs.PDF
- 第1节未开槽的手机平面倒F天线PIFA.DOC
- 第1步解压钱包注意:一定要解压后使用第2步进入钱包文件夹.PDF
- 第18讲误差方程式-四川建筑职业技术学院.DOC
- 鄂尔多斯盆地吴旗油区早侏罗世古地貌特征与油气-成都地质调查中心.PDF
- 2024年沧州市公务员考试行测真题及答案详解(名师系列).docx
- 粮油食品检验人员复习提分资料带答案详解(精练).docx
- 粮油食品检验人员自我提分评估(考点精练)附答案详解.docx
- 粮油食品检验人员全真模拟模拟题附参考答案详解(精练).docx
- 2025年延安市公务员考试行测试卷历年真题附答案详解(突破训练).docx
- 2025年株洲市公务员考试行测试卷历年真题含答案详解.docx
- 2024年枣庄市公务员考试行测真题及完整答案详解1套.docx
- 2024年抚顺市公务员考试行测真题及答案详解(各地真题).docx
- 2025年常州市公务员考试行测真题及一套参考答案详解.docx
- 2023年德州市公务员考试行测试卷历年真题及1套完整答案详解.docx
最近下载
- 3.1 贯彻新发展理念课件(共29张PPT)-(2024年)高一政治上学期(统编版必修2).pptx VIP
- 国家开放大学电大本科《人文英语4》2025-2026期末试题及答案(试卷号:2025).pdf VIP
- 2023年齐鲁师范学院计算机应用技术专业《计算机组成原理》科目期末试卷A(有答案).docx VIP
- 2025年支部查摆问题清单及整改措施落实表 .pdf VIP
- 历年(2020-2024)全国高考数学真题分类(导数及其应用小题)汇编(附答案).pdf VIP
- 贵州省市容环境卫生统一劳动定额.pdf VIP
- 3.1贯彻新发展理念 课件(共33张ppt)35.pptx VIP
- 2023年齐鲁师范学院计算机应用技术专业《计算机组成原理》科目期末试卷B(有答案).docx VIP
- 高思奥数一年级下册含答案第17讲测量.pdf VIP
- 2025北京市朝阳区招聘社区工作者425人笔试备考试题及答案解析.docx VIP
文档评论(0)