C++ 模板元编程的最佳介绍? [关闭]
Posted
技术标签:
【中文标题】C++ 模板元编程的最佳介绍? [关闭]【英文标题】:Best introduction to C++ template metaprogramming? [closed] 【发布时间】:2010-09-11 20:30:21 【问题描述】:静态元编程(又名“模板元编程”)是一种很棒的 C++ 技术,它允许在编译时执行程序。当我读到这个典型的元编程示例时,我的脑海中突然闪过一个灯泡:
#include <iostream>
using namespace std;
template< int n >
struct factorial enum ret = factorial< n - 1 >::ret * n ; ;
template<>
struct factorial< 0 > enum ret = 1 ; ;
int main()
cout << "7! = " << factorial< 7 >::ret << endl; // 5040
return 0;
如果想了解更多关于 C++ 静态元编程的知识,最好的资源是什么(书籍、网站、在线课件等等)?
【问题讨论】:
灯泡“关闭”或“打开”? 关闭。绝对关闭。 【参考方案1】:[回答我自己的问题]
到目前为止我发现的最好的介绍是第 10 章,“C++ 中的静态元编程”,来自 Generative Programming, Methods, Tools, and Applications,作者 Krzysztof Czarnecki 和 Ulrich W. Eisenecker,ISBN- 13:9780201309775;以及 David Vandevoorder 和 Nicolai M. Josuttis 的 C++ 模板:完整指南的第 17 章“元程序”,ISBN-13:9780201734843。
Todd Veldhuizen 有一个很棒的教程here。
一般来说,C++ 编程的一个很好的资源是 Modern C++ Design,作者是 Andrei Alexandrescu,ISBN-13:9780201704310。这本书混合了一些元编程和其他模板技术。对于元编程,请参阅第 2.1 节“编译时断言”、第 2.4 节“将整数常量映射到类型”、第 2.6 节“类型选择”、第 2.7 节“在编译时检测可转换性和继承”、第 2.9 节“NullType
和EmptyType
" 和 2.10 "类型特征"。
我发现的最好的中级/高级资源是 C++ 模板元编程,作者 David Abrahams 和 Aleksey Gurtovoy,ISBN-13:9780321227256
如果您只喜欢一本书,请获取C++ 模板:完整指南,因为它也是一般模板的权威参考。
【讨论】:
Todd Veldhuizen 作品的链接已过时。 我相信它是这样的:www10.informatik.uni-erlangen.de/~pflaum/pflaum/ProSeminar/… 链接已修复,谢谢! 链接又断了! 谢谢@jwfearn,我读了这篇文章,虽然我觉得这篇文章更有趣:youtube.com/watch?v=Am2is2QCvxY(它有两个部分)。这是 Walter E. Brown 的演讲:现代模板元编程:纲要【参考方案2】:Andrei Alexandrescu 的 Modern C++ Design 书涵盖了许多用于快速高效的现代 C++ 代码的技巧和其他技巧,并且是 Loki 库的基础。
还值得一提的是Boost 库,它大量使用这些技术,并且通常具有非常高的学习质量(尽管有些非常密集)。
【讨论】:
【参考方案3】:Modern C++ Design,Alexandrescu 的精彩书籍和设计模式框架。警告一句,读完这本书后,我停止使用 C++,并想“这算什么,我可以选择更好的语言并免费获得它”。
【讨论】:
“什么鬼,我可以选择更好的语言并免费获得它”嗯,你是什么意思?我对“免费”特别困惑。您还想到了什么其他语言? C++ 模板元编程为您提供了各种新功能,例如将类型或类型列表作为参数传递等。这些功能中的大多数都存在于诸如 python 之类的动态类型语言中,并且语法更好。 如果您正在寻找一种可以快速编写正确程序的语言,Python 比 C++ 更好。如果您需要 C++ 提供的其他一些东西,向 C++ 添加类似 Lisp 的功能可能比尝试 C++ 化另一种语言更好。【参考方案4】:我想到的两本好书是:
Modern C++ Design / Andrei Alexandrescu(尽管名字叫它实际上已经 7 岁了!) C++ 模板:完整指南 / Vandevoorde & Josuttis这是一个相当深入的领域,所以绝对推荐这样一本好书而不是网站。一些更高级的技术会让您研究代码一段时间以弄清楚它们是如何工作的!
【讨论】:
【参考方案5】:Modern C++ 是我读过的最好的介绍之一。它涵盖了模板元编程的实际有用示例。另请查看配套库Loki。
【讨论】:
【参考方案6】:不会有很大的书单,因为经验丰富的人的名单是有限的。模板元编程真正开始于 2000 年的第一次 C++ 模板编程研讨会,到目前为止,许多作者都参加了。 (IIRC,Andrei 没有。)这些先驱者极大地影响了这个领域,基本上应该写的现在都写了。就个人而言,我建议 Vandevoorde & Josuttis。如果您是该领域的新手,Alexandrescu 的书是一本难读的书。
【讨论】:
【参考方案7】:Veldhuizen 的原始论文很好。如果您想看一整本书,那么有 Vandevoorde 的书“C++ 模板完整指南”。当您准备好攻读硕士课程时,不妨试试 Alexandrescu 的现代 C++ 设计。
【讨论】:
【参考方案8】:google Alexandrescu,现代 C++ 设计:应用通用编程和设计模式
【讨论】:
以上是关于C++ 模板元编程的最佳介绍? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章