BOOK / SOURCE & READING RECORD
C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond
David Abrahams; Aleksey Gurtovoy
1st edition, copyright 2005 (published December 2004)
C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond
实际读完 InformIT 正式第 3 章 A Deeper Look at Metafunctions 的 3.1–3.7(含习题),并阅读 Boost MPL tutorial 的维度、量、加减、乘、除对应正文。第 1–2、4–11 章与附录未读;Boost 文档不是整本书,出版社购买版未取得。
查看版本、实际阅读范围与原文入口 →让类型挡住量纲错误,不夸大它的能力
给数字附上量纲之后,加法是否合法和乘除法产生什么量纲可以由类型计算决定,而数值仍在运行时处理。这种分工比“把所有东西提前计算”更有实际价值:调用者不能把秒数直接加到长度上,库作者也不必在每一处重复比较标签。原书借助 MPL 的序列、变换和高阶元函数表达指数运算,现代小例子可以用整数模板参数直接表达有限维度,不必搬入整套历史工具。但是量纲正确不表示单位比例正确,也不表示数值精度、溢出和除零已解决。元编程应当消灭明确的一类错误,同时把未覆盖的边界写出来。
阅读定位:第 3 章 3.1.1–3.1.5 Dimensional Analysis;3.2 Higher-Order Metafunctions;3.5.4 惰性求值。
原文与实际阅读范围
- 官方第 3 章 An In-Depth Look at Metafunctions in C++
3.1–3.7 全部在线正文:量纲、metafunction class、lambda/apply、惰性求值与习题。
- Boost MPL tutorial: Dimensional Analysis
阅读本页和相邻表示维度、量、加减乘除页面;仅对应第 3 章部分。
- InformIT 版本和样章入口
第一版及完整章节目录,不是全书。
出版社书籍与章节保持版权;Boost 代码许可不能自动扩展成全书转载许可。本站只发布原创文本与独立示例,提供原始链接。
能下载不等于已经读完;试读章节不等于全书。这里的原创笔记不是原书全文、译本或逐章替代品。
相关基础知识
相关主题链接用于补充背景,不表示这些既有文章已经按整本书核查。