Skip to the content.
- C++ 模板技术是泛型编程的核心,但囿于编译器技术限制,不得不带着缺陷诞生,语法晦涩,报错冗长,难以调试,应用层开发较少使用,相关技术书籍匮乏,因此掌握难度较大。模板相关的经典技术书籍主要有三本,分别是 2001 年出版的 Modern C++ Design、2002 年出版的 C++ Templates、2004 年出版的 C++ Template Metaprogramming。三者基于的 C++ 标准都是 C++98,Modern C++ Design 涉及 Andrei Alexandrescu 写书时配套的 Loki,C++ Template Metaprogramming 涉及 Boost,二者以介绍元编程(模板技术的一种应用)为主,只有 C++ Templates 主要介绍 C++98 标准的模板技术。时过境迁,C++ 标准的更新逐步修复了一些语法缺陷,减少了使用者的心智负担,并引入了语法糖和工具,让编写模板越来越简单。2017 年 9 月 25 日,基于 C++17 标准,C++ Templates 2ed 出版,填补了十多年间模板技术进化时相关书籍的空白,堪称最全面的模板教程,也是对 C++11/14/17 特性介绍最为全面的书籍之一。个人完整学习原书后,梳理精简章节脉络,补充 C++20 相关特性,如 concepts、支持模板参数的 lambda 等,运行验证所有代码结果,最终记录至此。
Contents
- Function template
- Class template
- Non-type template parameter
- Variadic template
- Move semantics and perfect forwarding
- Name lookup
- Instantiation
- Template argument deduction
- Specialization and overloading
- Traits
- Inheritance
- Type erasure
- Metaprogramming
- Expression template
- Debugging