C++ / a working model

BOOK / SOURCE & READING RECORD

Advanced C++ Metaprogramming

Davide Di Gennaro

2011 CreateSpace edition, ISBN 9781460966167 (not the differently titled 2015 Apress book)

READING EVIDENCE / 已读部分正文

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

原文与实际阅读范围

作者主动公开的样稿可供外部阅读,未见许可本站重新托管或改写再版;只提供外部入口与原创教学。两个样稿的下载及哈希仅保留在私有 research/books,不部署 PDF。

能下载不等于已经读完;试读章节不等于全书。这里的原创笔记不是原书全文、译本或逐章替代品。

相关基础知识

相关主题链接用于补充背景,不表示这些既有文章已经按整本书核查。

← 返回全部书籍