編輯推薦
C++領域經典圖書時隔15年之後的全新升級
針對C++11、C++14和C++17標準進行瞭全麵更新
C++軟件工程師完全參考指南
C++模闆知識的解釋
C++標準參考讀物
primer之後的模闆技術研究**
使用C++模闆的常用設計技巧
應用例證
內容簡介
本書是同名經典暢銷圖書的全新升級版本,針對C++11、C++14、C++17標準進行瞭全麵更新,並對所有的新語言特性(包括可變參數模闆、通用lambda、類模闆參數推導等)進行瞭解釋。
全書共28章。首先全麵介紹瞭本書的內容結構和相關情況。第1部分(第1~11章)介紹瞭模闆的基本概念,第2部分(第12~17章)深入闡述瞭模闆的細節,第3部分(第18~28章)介紹瞭C++模闆所支持的基本設計技術。附錄A、附錄B、附錄C、附錄D和附錄E分彆為一處定義原則、值類彆、重載解析、標準類型實用程序和概念的相關資料。
本書適閤對C++模闆技術感興趣的有一定經驗的程序員閱讀。
作者簡介
David Vandevoorde,Edison Design Group公司的工程副總裁,為公司的C++編譯器中的一些關 鍵特性進行瞭架構設計。他是知名的comp.lang.c++.moderat論壇的聯閤創始人,同時還積極投身於C++ 的標準化工作。他擁有倫斯勒理工學院計算機科學博士、碩士學位,以及布魯塞爾自由大學的工程碩 士學位。
Nicolai M. Josuttis,他是一位獨立的係統架構師、技術經理、顧問以及培訓師,過去20年以來 他一直緻力於C++的標準化工作。他還是The C++ Standard Library: A Tutorial and Reference (2nd Edition) 等書的作者。
Douglas Gregor,是一位知名的編譯器人員,具有C++庫的設計背景。作為Boost的早期貢獻 者,他開發的一些庫被列入瞭C++標準。在對C++11提供支持的期間,他領導瞭開源的C++編譯器 Clang的實現。他擁有倫斯勒理工學院的計算機科學博士學位。
目錄
第 1部分: 基本概念
1 Function Templates 第 1章 函數模闆
1.1 A First Look at Function Templates/初識函數模闆
1.1.1 Defining the Template/定義模闆
1.1.2 Using the Template/使用模闆
1.1.3 Two-Phase Translation/二階段翻譯
1.2 Template Argument Deduction/模闆參數推導
1.3 Multiple Template Parameters/多模闆參數
1.3.1 Template Parameters for Return Types/返迴類型的模闆參數
1.3.2 Deducing the Return Type/推導返迴類型
1.3.3 Return Type as CommonType/作為通用類型返迴
1.4 Default Template Arguments/缺省模闆參數
1.5 Overloading Function Templates/重載函數模闆
1.6 But,Shouldn’t We... /但是,難道我們不應該…?
1.6.1 Pass by Value or by Reference /按值傳遞還是按引用傳遞?
1.6.2 Why Not inline 為什麼不用inline呢?
1.6.3 Why Not constexpr 為什麼不用constexpr呢?
1.7 Summary/小結
2 Class Template 第 2章 類模闆
2.1 Implementation of Class Template Stack/類模闆Stack的實現
2.1.1 Declaration of Class Templates/類模闆聲明
2.1.2 Implementation of Member Functions/成員函數的實現
2.2 Use of Class Template Stack/類模闆Stack的使用
2.3 Partial Usage of Class Templates/類模闆的局部使用
2.3.1 Concepts/概念
2.4 Friends/友元
2.5 Specializations of Class Templates/類模闆特化
2.6 Partial Specialization/偏特化
2.7 Default Class Template Arguments/缺省類模闆參數
2.8 Type Aliases/類型彆名
2.9 Class Template Argument Deduction/類模闆參數推導
2.10 Templatized Aggregates/模闆聚閤
2.11 Summary/小結
3 Nontype Template Parameters 第3章 非類型模闆參數
3.1 Nontype Class Template Parameters/非類型類模闆參數
3.2 Nontype Function Template Parameters/非類型函數模闆參數
3.3 Restrictions for Nontype Template Parameters/非類型模闆參數的限製
3.4 Template Parameter Type auto/模闆參數類型auto
3.5 Summary/小結
4 Variadic Templates第4章 可變參數模闆
4.1 Variadic Templates/可變參數模闆
4.1.1 Variadic Templates by Example/可變參數模闆實例
4.1.2 Overloading Variadic and Nonvariadic Templates/重載可變參數和非可變參數模闆
4.1.3 Operator sizeof/運算符sizeof
4.2 Fold Expressions/摺疊錶達式
4.3 Application of Variadic Templates /可變參數模闆的應用
4.4 Variadic Class Templates and Variadic Expressions/可變參數類模闆和可變參數錶達式
4.4.1 Variadic Expressions/可變參數錶達式
4.4.2 Variadic Indices/可變參數指數
4.4.3 Variadic Class Templates/可變參數類模闆
4.4.4 Variadic Deduction Guides/可變參數推導指南
4.4.5 Variadic Base Classes and using/可變參數基類和using
4.5 Summary/小結
5 Tricky Basics 第5章 基礎技術
5.1 Keyword typename/關鍵字typename
5.2 Zero Initialization/零初始化
5.3 Using this->/ this->的使用
5.4 Templates for Raw Arrays and String Literals/原始數組和字符串字麵量模闆
5.5 Member Templates/成員模闆
5.5.1 The .template Construct/構造.template
5.5.2 Generic Lambdas and Member Templates/泛型Lambda與成員模闆
5.6 Variable Templates/變量模闆
5.7 Template Template Parameters/模闆的模闆參數
5.8 Summary/小結
6 Move Semantics and enable_if<> 第6章 移動語義與enable_if<>
6.1 Perfect Forwarding/完美轉發
6.2 Special Member Function Templates/特殊的成員函數模闆
6.3 Disable Templates with enable_if<>/使用enable_if <>禁用模闆
6.4 Using enable_if<>/使用enable_if<>
6.5 Using Concepts to Simplify enable_if<> Expressions/ 使用概念簡化enable_if<>錶達式
6.6 Summary/小結
7 By Value or by Reference 第7章 按值傳遞還是按引用傳遞?
7.1 Passing by Value/按值傳遞
7.2 Passing by Reference/按引用傳遞
7.2.1 Passing by Constant Reference/按常量引用調傳遞
7.2.2 Passing by Nonconstant Reference/按非常量引用傳遞
7.2.3 Passing by Forwarding Reference/按轉發傳遞
7.3 Using std::ref()andstd::cref()/std::ref() 和std::cref()的使用
7.4 Dealing with String Literals and Raw Arrays/ 處理字符串字麵量常量與原始數組
7.4.1 Special Implementations for String Literals and Raw Arrays/ 字符串字麵量常量和原始數組的特殊實現
7.5 Dealing with Return Values/處理返迴值
7.6 Recommended Template Parameter Declarations/模闆參數聲明推薦
7.7 Summary/小結
8 Compile-Time Programming 第8章 編譯時編程
8.1 Template Meta programming/模闆元編程
8.2 Computing with constexpr/使用constexpr計算
8.3 Execution Path Selection with Partial Specialization/局部特化的執行路徑選擇
8.4 SFINAE(Substitution Failure Is Not An Error)/ SFINAE(替換失敗並不是一種錯誤)
8.4.1 Expression SFINAE with decltype/ 帶有decltype 的SFINAE錶達式
8.5 Compile-Time if/編譯時if
8.6 Summary/小結
9 Using Templates in Practice 第9章 在實戰中使用模闆
9.1 The Inclusion Model/包含模型
9.1.1 Linker Errors/鏈接器錯誤
9.1.2 Templates in Header Files/頭文件中的模闆
9.2 Templates and inline/模闆和內聯
9.3 Precompiled Headers/預編譯頭文件
9.4 Decoding the Error Novel/破譯大篇幅錯誤信息
9.5 Afternotes/本章後記
9.6 Summary/小結
10 Basic Template Terminology 第 10章 基本模闆術語
10.1“Class Template” or “Template Class” / “類模闆”還是“模闆類”
10.2 Substitution , Instantiation , and Specialization/替換、實例化和特化
10.3 Declarations versus Definitions/聲明和定義
10.3.1 Complete versus Incomplete Types/完全和不完全類型
10.4 The One-Definition Rule/一處定義規則
10.5 Template Arguments versus Template Parameters/模闆實數和模闆形參
10.6 Summary/小結
11 Generic Libraries 第 11章 泛型庫
11.1 Callables/ Callable
11.1.1 Supporting Function Objects/支持函數對象
11.1.2 Dealing with Member Functions and Additional Arguments/處理成員函數和附加實參
11 .1.3 Wrapping Function Calls/包裝函數調用
11.2 Other Utilities to Implement Generic Libraries/實現泛型庫的其他實用程序
11.2.1 Type Traits/ Type Traits
11.2.2 std::addressof()/std::addressof()
11.2.3 std::declval()/std::declval()
11.3 Perfect Forwarding Temporaries/完美轉發臨時對象
11.4 References as Template Parameters/引用為模闆參數
11.5 Defer Evaluations/延遲評估
11.6 Things to Consider When Writing Generic Libraries/編寫泛型庫時需要考慮的事情
11.7 Summary/小結
PartII: Templates in Depth 第二部分 深入模闆
12 Fundamentals in Depth深入模闆基礎
12.1 Parameterized Declarations/參數化宣告
12.1.1 Virtual Member Functions/虛成員函數
12.1.2 Linkage of Templates/模闆鏈接
12.1.3 Primary Templates/主模闆
12.2 Template Parameters/模闆形參
12.2.1 Type Parameters/類型形參
12.2.2 Nontype Parameters/非類型形參
12.2.3 Template Template Parameters/模闆的模闆形參
12.2.4 Template Parameter Packs/模闆參數包
12.2.5 Default Template Arguments/缺省模闆實參
12.3 Template Arguments/模闆實參
12.3.1 Function Template Arguments/函數模闆實參
12.3.2 Type Arguments/類型實參
12.3.3 Nontype Arguments/非類型實參
12.3.4 Template Template Arguments/模闆的模闆實參
12.3.5 Equivalence/實參的等價性
12.4 Variadic Templates/可變參數模闆
12.4.1 Pack Expansions/包擴展
12.4.2 Where Can Pack Expansions Occur /在哪裏進行包擴展?
12.4.3 Function Parameter Packs/函數的參數包
12.4.4 Multiple and Nested Pack Expansions/多重和嵌套包擴展
12.4.5 Zero-Length Pack Expansions/零長度包擴展
12.4.6 Fold Expressions/摺疊錶達式
12.5 Friends/友元
12.5.1 Friend Classes of Class Templates/類模闆的友元類
12.5.2 Friend Functions of Class Templates /類模闆的友元函數
12.5.3 Friend Templates/友元模闆
12.6 Afternotes/本章後記
13 Names in Templates 第 13章 模闆中的名稱
13.1 Name Taxonomy/名稱的分類
13.2 Looking Up Names/名稱的查找
13.2.1 Argument-Dependent Lookup/參數依賴查找 (ADL)
13.2.2 Argument-Dependent Lookup of Friend Declarations/友元聲明的ADL
13.2.3 Injected Class Names/注入式類名稱
13.2.4 Current Instantiations/當前實例化
13.3 Parsing Templates/解析模闆
13.3.1 Context Sensitivity in Nontemplates/非模闆的上下文敏感性
13.3.2 Dependent Names of Types/類型的依賴名稱
13.3.3 Dependent Names of Templates/模闆的依賴名稱
13.3.4 Dependent Names in Using Declarations/使用聲明中的依賴名稱
13.3.5 ADL and Explicit Template Arguments/ADL和顯式模闆實參
13.3.6 Dependent Expressions/依賴錶達式
13.3.7 Compiler Errors/編譯器錯誤
13.4 Inheritance and Class Templates/繼承和類模闆
13.4.1 Nondependent Base Classes/非依賴型基類
13.4.2 Dependent Base Classes/依賴型基類
13.5 Afternotes/本章後記
14 Instantiation 第 14章 實例化
14.1 On-Demand Instantiation/ 按需實例化
14.2 Lazy Instantiation/延遲實例化
14.2.1 Partial and Full Instantiation/部分和全部實例化
14.2.2 Instantiated Componen
C++ Templates 第2版 英文版 epub pdf mobi txt 電子書 下載 2024
C++ Templates 第2版 英文版 下載 epub mobi pdf txt 電子書