C++ 20模板元编程 收藏

  • 书籍语言:简体中文
  • 下载次数:7905
  • 书籍类型:Epub+Txt+pdf+mobi
  • 创建日期:2025-07-26 22:10:05
  • 发布日期:2025-09-06
  • 连载状态:全集
  • 书籍作者:马里乌斯·班西拉
  • 运行环境:pc/安卓/iPhone/iPad/Kindle/平板

内容简介


学习元编程技术如何创建数据结构和函数,从而在编译时进行计算。通过《C++ 20模板元编程》,你将理解模板如何帮助你避免编写重复代码,模板是创建通用库(如标准库或Boost)的关键,这些库可以在多种程序中使用。

本书的前几章将为你提供关于模板和元编程基础的知识。然后,你将开始练习编写复杂的模板,并探索高级概念,如模板递归、模板实参推导、转发引用、类型特征和条件编译。在此过程中,你将学习如何编写变参模板,以及如何使用C++20的约束和概念为模板实参提供约束和限制。最后,你将应用C++元编程模板的知识实现各种元编程模式和技术。

到本书结束时,你将学会如何编写有效的模板,并在日常编程中使用元编程。

● 理解所有类型模板的语法

● 学习特化和实例化的工作原理

● 掌握模板实参推导和转发引用

● 轻松编写变参模板

● 掌握类型特征和条件编译

● 使用 C++20 的约束和概念限制模板实参

● 实现CRTP、混入(mixin)和标签派发等模式


作者简介

马里乌斯·班西拉(Marius Bancila)于2002年作为一名软件开发人员开始了职业生涯,专注于使用 Visual C++、C# 和 .NET 框架开发桌面应用程序。尽管多年来使用过许多编程和脚本语言(例如 Pascal、C、C++、Java、JavaScript、C#、VB.NET、MC++、C++/CLI、HTML、CSS 等),但 C++ 始终是他的首选语言。目前他在挪威的Visma公司担任 ERP 系统的系统架构师。

Marius Bancila是Modern C++ Programming Cookbook和Modern C++ Challenge等多本C++技术图书的作者,热衷于与他人分享技术专长,并因此自2006年起连续18年被授予微软MVP(最有价值专家)称号。他撰写了大量技术文章,创建和参与了多个开源项目,并活跃于各类在线开发者社区。


编辑推荐

吴咏炜、祁宇、张银奎联袂推荐!


通过C++20模板元编程,将编译期计算转化为高性能代码引擎,让复杂泛型设计变得简单可维护。


解决模板“难读、难写、难调试”三大痛点。




下载地址

目录

第Ⅰ部分 模板的核心概念

第1章 模板的简介 3

1.1 理解模板的必要性 3

1.2 编写你的第一个模板 6

1.3 理解模板术语 9

1.4 模板的简史 10

1.5 模板的优缺点 12

1.6 总结 12

1.7 问题 13

第2章 模板的基础 15

2.1 定义函数模板 15

2.2 定义类模板 18

2.3 定义成员函数模板 20

2.4 理解模板形参 21

2.5 理解模板实例化 32

2.6 理解模板特化 39

2.7 定义变量模板 46

2.8 定义别名模板 49

2.9 探索泛型lambda和lambda模板 51

2.10 总结 57

2.11 问题 57

第3章 变参模板 59

3.1 理解变参模板的必要性 59

3.2 变参函数模板 61

3.3 形参包 65

3.4 变参类模板 73

3.5 折叠表达式 79

3.6 变参别名模板 82

3.7 变参变量模板 84

3.8 总结 84

3.9 问题 85


第Ⅱ部分 高级模板特性

第4章 高级模板的概念 89

4. 1 理解名称绑定和依赖名称 89

4.2 探索模板递归 99

4.3 函数模板实参推导 103

4.4 类模板实参推导 112

4.5 转发引用 117

4.6 decltype说明符 123

4.7 std::declval类型运算符 128

4.8 理解模板中的友元关系 130

4.9 总结 135

4.10 问题 135

第5章 类型特征和条件编译 137

5.1 理解和定义类型特征 137

5.2 探索SFINAE及其目的 141

5.3 使用enable_if类型特征启用SFINAE 145

5.4 使用 constexpr if 149

5.5 探索标准库类型特征 152

5.6 使用类型特征的实际例子 163

5.7 总结 167

5.8 问题 168

第6章 概念和约束 169

6.1 理解概念的必要性 169

6.2 定义概念 174

6.3 探索requires表达式 176

6.4 组合约束 183

6.5 了解带约束模板的顺序 187

6.6 约束非模板成员函数 190

6.7 约束类模板 193

6.8 约束变量模板和模板别名 194

6.9 学习更多指定约束的方法 195

6.10 使用概念约束auto形参 196

6.11 探索标准概念库 198

6.12 总结 202

6.13 问题 202


第Ⅲ部分 模板的应用

第7章 模式和惯用法 205

7.1 动态多态和静态多态 205

7.2 奇异递归模板模式 208

7.3 混入 220

7.4 类型擦除 225

7.5 标签派发 231

7.6 表达式模板 236

7.7 类型列表 243

7.8 总结 253

7.9 问题 254

第8章 范围和算法 255

8.1 理解容器、迭代器和算法的设计 255

8.2 创建自定义容器和迭代器 262

8.3 编写自定义通用算法 275

8.4 总结 277

8.5 问题 278

第9章 范围库 279

9.1 从抽象范围到范围库 279

9.2 理解范围概念和视图 281

9.3 理解受约束算法 291

9.4 编写自己的范围适配器 294

9.5 总结 300

9.6 问题 300

附录A 结束语 301


——以下内容可扫描封底二维码下载——

问题答案 303

参考文献 313


短评