内容简介

  《C和C++实务精选:C++Templates中文版》是C++模板编程的完全指南,旨在通过基本概念、常用技巧和应用实例三方面的有用资料,为读者打下C++模板知识的坚实基础。  《C和C++实务精选:C++ Templates中文版》共22章。第1章全面介绍了《C和C++实务精选:C++Templates中文版》的内容结构和相关情况。第1部分(第2~7章)以教程的风格介绍了模板的基本概念,第2部分(第8~13章)阐述了模板的语言细节,第3部分(第14~18章)介绍了C++模板所支持的基本设计技术,第4部分(第19~22章)深入探讨了各种使用模板的普通应用程序。附录A和附录B分别为一处定义原则和重载解析的相关资料。  《C和C++实务精选:C++Templates中文版》适合C++模板技术的初学者阅读,也可供有一定编程经验的C++程序员参考。

作者简介

DavidVandevoorde有20多年的C++工作经验,C++标准委员会成员。曾因为审校TheC++ProgrammingLanguage一书的草稿,获得BjarneStroustrup的推荐,编写了C++Solutions。NicolaiM.JosuttisTheC++StandardLibrary-ATutorialandReference(中文版名为《C++标准库》)的作者,这《C和C++实务精选:C++ Templates中文版》出版以后成为实际上的标准读本。

目录

第1章关于本章1.1阅读《C和C++实务精选:C++ Templates中文版》所需具备的知识1.2《C和C++实务精选:C++ Templates中文版》的整体结构1.3如何阅读《C和C++实务精选:C++ Templates中文版》1.4关于编程风格的一些说明1.5标准和现实1.6代码例子和更多信息1.7反馈
第1部分基础第2章函数模板2.1初探函数模板2.1.1定义模板2.1.2使用模板2.2实参的演绎(deduction)2.3模板参数2.4重载函数模板2.5小结
第3章类模板3.1类模板Stack的实现3.1.1类模板的声明3.1.2成员函数的实现3.2类模板Stack的使用3.3类模板的特化3.4局部特化3.5缺省模板实参3.6小结
第4章非类型模板参数4.1非类型的类模板参数4.2非类型的函数模板参数4.3非类型模板参数的限制4.4小结
第5章技巧性基础知识5.1关键字typename5.2使用this->5.3成员模板5.4模板的模板参数5.5零初始化5.6使用字符串作为函数模板的实参5.7小结
第6章模板实战6.1包含模型6.1.1链接器错误6.1.2头文件中的模板6.2显式实例化6.2.1显式实例化的例子6.2.2整合包含模型和显式实例化6.3分离模型6.3.1关键字export6.3.2分离模型的限制6.3.3为分离模型做好准备6.4模板和内联6.5预编译头文件6.6调试模板6.6.1理解长段的错误信息6.6.2浅式实例化6.6.3长符号串6.6.4跟踪程序6.6.5oracles6.6.6archetypes6.7本章后记6.8小结
第7章模板术语7.1"类模板"还是"模板类"7.2实例化和特化7.3声明和定义7.4一处定义原则7.5模板实参和模板参数
第2部分深入模板第8章深入模板基础8.1参数化声明8.1.1虚成员函数8.1.2模板的链接8.1.3基本模板8.2模板参数8.2.1类型参数8.2.2非类型参数8.2.3模板的模板参数8.2.4缺省模板实参8.3模板实参8.3.1函数模板实参8.3.2类型实参8.3.3非类型实参8.3.4模板的模板实参8.3.5实参的等价性8.4友元8.4.1友元函数8.4.2友元模板8.5本章后记
第9章模板中的名称9.1名称的分类9.2名称查找9.2.1Argument-DependentLookup(ADL)9.2.2友元名称插入9.2.3插入式类名称9.3解析模板9.3.1非模板中的上下文相关性9.3.2依赖型类型名称9.3.3依赖型模板名称9.3.4using-declaration中的依赖型名称9.3.5ADL和显式模板实参9.4派生和类模板9.4.1非依赖型基类9.4.2依赖型基类9.5本章后记
第10章实例化10.1On-Demand实例化10.2延迟实例化10.3C++的实例化模型10.3.1两阶段查找10.3.2POI10.3.3包含模型与分离模型10.3.4跨翻译单元查找10.3.5例子10.4几种实现方案10.4.1贪婪实例化10.4.2询问实例化10.4.3迭代实例化10.5显式实例化10.6本章后记
第11章模板实参演译11.1演绎的过程11.2演绎的上下文11.3特殊的演绎情况11.4可接受的实参转型11.5类模板参数11.6缺省调用实参11.7Barton-Nackman方法11.8本章后记
第12章特化与重载12.1当泛型代码不再适用的时候12.1.1透明自定义12.1.2语义的透明性12.2重载函数模板12.2.1签名12.2.2重载的函数模板的局部排序12.2.3正式的排序原则12.2.4模板和非模板12.3显式特化12.3.1全局的类模板特化12.3.2全局的函数模板特化12.3.3全局成员特化12.4局部的类模板特化12.5本章后记
第13章未来的方向13.1尖括号Hack13.2放松typename的原则13.3缺省函数模板实参13.4字符串文字和浮点型模板实参13.5放松模板的模板参数的匹配13.6typedef模板13.7函数模板的局部特化13.8typeof运算符13.9命名模板实参13.10静态属性13.11客户端的实例化诊断信息13.12重载类模板13.13List参数13.14布局控制13.15初始化器的演绎13.16函数表达式13.17本章后记
第3部分模板与设计第14章模板的多态威力14.1动多态14.2静多态14.3动多态和静多态14.3.1术语14.3.2优点和缺点14.3.3组合这两种多态14.4新形式的设计模板14.5泛型程序设计14.6本章后记
第15章trait与policy类15.1一个实例:累加一个序列15.1.1fixedtraits15.1.2valuetrait15.1.3参数化trait15.1.4policy和policy类15.1.5trait和policy:区别在何处15.1.6成员模板和模板的模板参数15.1.7组合多个policie和/或trait15.1.8运用普通的迭代器进行累积15.2类型函数15.2.1确定元素的类型15.2.2确定class类型15.2.3引用和限定符15.2.4promotiontrait15.3policytrait15.3.1只读的参数类型15.3.2拷贝、交换和移动15.4本章后记
第16章模板与继承16.1命名模板参数16.2空基类优化16.2.1布局原则16.2.2成员作基类16.3奇特的递归模板模式16.4参数化虚拟性16.5本章后记
第17章metaprogram17.1metaprogram的第一个实例17.2枚举值和静态常量17.3第2个例子:计算平方根17.4使用归纳变量17.5计算完整性17.6递归实例化和递归模板实参17.7使用metaprogram来展开循环17.8本章后记
第18章表示式模板18.1临时变量和分割循环18.2在模板实参中编码表达式18.2.1表达式模板的操作数18.2.2Array类型18.2.3运算符18.2.4回顾18.2.5表达式模板赋值18.3表达式模板的性能与约束18.4本章后记
第4部分高级应用程序第19章类型区分19.1辨别基本类型19.2辨别组合类型19.3辨别函数类型19.4运用重载解析辨别枚举类型19.5辨别class类型19.6辨别所有类型的函数模板19.7本章后记
第20章智能指针20.1holder和trule20.1.1安全处理异常20.1.2holder20.1.3作为成员的holder20.1.4资源获取于初始化20.1.5holder的局限20.1.6复制holder20.1.7跨函数调用来复制holder20.1.8trule20.2引用记数20.2.1计数器在什么地方20.2.2并发访问计数器20.2.3析构和释放20.2.4CountingPtr模板20.2.5一个简单的非侵入式计数器20.2.6一个简单的侵入式计数器模板20.2.7常数性20.2.8隐式转型20.2.9比较20.3本章后记
第21章tuple21.1duo21.2可递归duo21.2.1域的个数21.2.2域的类型21.2.3域的值21.3tuple构造21.4本章后记
第22章函数对象和回调22.1直接调用、间接调用与内联调用22.2函数指针与函数引用22.3成员函数指针22.4class类型的仿函数22.4.1class类型仿函数的第1个实例22.4.2class类型仿函数的类型22.5指定仿函数22.5.1作为模板类型实参的仿函数22.5.2作为函数调用实参的仿函数22.5.3结合函数调用参数和模板类型参数22.5.4作为非类型模板实参的仿函数22.5.5函数指针的封装22.6内省22.6.1分析一个仿函数的类型22.6.2访问参数的类型22.6.3封装函数指针22.7函数对象组合22.7.1简单的组合22.7.2混合类型的组合22.7.3减少参数的个数22.8值绑定22.8.1选择绑定的目标22.8.2绑定签名22.8.3实参选择22.8.4辅助函数22.9仿函数操作:一个完整的实现22.10本章后记
附录A一处定义原则A.1翻译单元A.2声明和定义A.3一处定义原则的细节A.3.1程序的一处定义约束A.3.2翻译单元的一处定义约束A.3.3跨翻译单元的等价性约束
附录B重载解析B.1何时应用重载解析B.2简化过的重载解析B.2.1成员函数的隐含实参B.2.2细化完美匹配B.3重载的细节B.3.1非模板优先B.3.2转型序列B.3.3指针的转型B.3.4仿函数和代理函数B.3.5其他的重载情况参考资料术语表

其他推荐