C++ / a working model

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)

READING EVIDENCE / 已读部分正文

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 惰性求值。

原文与实际阅读范围

出版社书籍与章节保持版权;Boost 代码许可不能自动扩展成全书转载许可。本站只发布原创文本与独立示例,提供原始链接。

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

相关基础知识

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

← 返回全部书籍