BOOK / SOURCE & READING RECORD
Advanced C++ Metaprogramming
Davide Di Gennaro
2011 CreateSpace edition, ISBN 9781460966167 (not the differently titled 2015 Apress book)
Advanced C++ Metaprogramming
实际读完作者提供的 §5.2.2 Concept traits 两页样稿,以及 bonus chapter PDF 书页 405–408(§9.3.2 结尾及 §9.3.3 More on the double wrapper technique)。bonus 文件不是一整章,不据名称夸大范围。其余正文未取得;目录仅核对结构,零售和 Google Books 页面只有元数据,未充作正文。
查看版本、实际阅读范围与原文入口 →阅读原创实践:Traits 适配的是表达式,Concepts 检查的是边界 →
语法可适配,语义仍须约定
Concept traits 样稿展示了一个容易忽略的事实:看起来相同的调用表达式,可能由静态函数、函数对象、构造或转换完成。泛型代码真正依赖的应当是表达式成立后带来的效果,而不是想象对方一定用了某一种声明。这个自由同时需要边界;把释放资源藏在隐式转换中虽然能演示语言能力,却让代码审查很难看清副作用。另一个 bonus 样稿用经典 C++ 包装器阻止不同枚举混比,今天通常直接选择 enum class。我的现代取舍是用 requires 写明调用形状,用少量显式 traits 适配外部类型,并以文档和断言描述不可由概念证明的语义。这里的历史 concept traits 不能被称为 C++20 concepts 的同一项语言功能。
阅读定位:作者样稿 §5.2.2 Concept traits,两页;bonus §9.3.3,书页 405–408
原文与实际阅读范围
- 作者博客与样稿下载入口
作者发布 §5.2.2 样稿及 bonus PDF;博客产品说明不算正文。
- 作者 bonus chapter 修复链接公告
链接的四页 PDF 实际仅书页 405–408。
- 作者公开 Concept traits 样稿
完整两页 §5.2.2,traits 同一调用语法可由不同实体实现。
作者主动公开的样稿可供外部阅读,未见许可本站重新托管或改写再版;只提供外部入口与原创教学。两个样稿的下载及哈希仅保留在私有 research/books,不部署 PDF。
能下载不等于已经读完;试读章节不等于全书。这里的原创笔记不是原书全文、译本或逐章替代品。
相关基础知识
相关主题链接用于补充背景,不表示这些既有文章已经按整本书核查。