最好的介绍C + +模板元编程?

静态元编程(又名“模板元编程”)是一个非常棒的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 ++静态元编程的知识,最好的资源(书籍,网站,在线课件等等)是什么?

[回答我自己的问题]

到目前为止,我所发现的最好的介绍是Krzysztof Czarnecki和Ulrich W. Eisenecker在ISBN-13:9780201309775中的第十章,“ 生成规划,方法,工具和应用程序中的C ++静态元编程”。 和C ++模板的 “Metaprograms” David Vandevoorder和Nicolai M. Josuttis的ISBN-13:9780201734843的“完全指南”

替代文字http://ak.buy.com/db_assets/prod_images/941/30676941.jpg 替代文字http://ak.buy.com/db_assets/prod_images/235/31025235.jpg alt text http:// ak。 buy.com/db_assets/prod_images/704/30680704.jpg 替代文字http://ak.buy.com/db_assets/prod_images/218/39856218.jpg

托德Veldhuizen有一个很好的教程在这里 。

C ++编程的一个很好的资源是Andrei Alexandrescu的Modern C ++ Design ,ISBN-13:9780201704310。本书将一些元编程与其他模板技术混合在一起。 特别是对于元编程,请参见2.1“编译时断言”,2.4“将types常量映射到types”,2.6“typesselect”,2.7“在编译时检测可转换性和inheritance性”,2.9“ NullTypeEmptyType ”types特征“。

我发现的最好的中间/高级资源是由David Abrahams和Aleksey Gurtovoy编写的C ++ Template Metaprogramming ,ISBN-13:9780321227256

如果你只想要一本书,可以selectC ++模板:完整指南,因为它也是模板的权威参考。

Andrei Alexandrescu的“ 现代C ++devise”一书涵盖了大量的快速高效的现代C ++代码以及其他技巧,也是Loki库的基础。

另外值得一提的是Boost库,它们大量使用这些技术,并且通常具有很高的学习质量(尽pipe有些相当密集)。

现代C ++devise ,由Alexandrescu出色的书籍和devise模式框架。 警告的话,读完这本书之后,我停止了C ++的研究,并且认为“到底是什么,我可以select一种更好的语言,并免费得到它”。

想到的两本好书是:

  • 现代C ++devise/ Andrei Alexandrescu(尽pipe名字实际上是7岁!)
  • C ++模板:完整指南/ Vandevoorde&Josuttis

这是一个相当深入的领域,所以像其中之一的好书是绝对推荐在网站上。 一些更先进的技术将让你研究一段时间的代码来弄清楚它们是如何工作的!

不会有大量的书籍,因为有很多经验的人员名单是有限的。 在2000年的第一次C ++模板编程研讨会上,模板元编程开始了真正的模式,到目前为止,许多名为作者的作者都出席了。 (IIRC,安德烈没有。)这些先驱者对这个领域有很大的影响,基本上写的是现在写的东西。 我个人build议Vandevoorde和Josuttis。 如果你是新手,Alexandrescu是一本艰难的书。

现代C ++是我读过的最好的介绍之一。 它涵盖了模板元编程的实际有用的例子。 还要看看Loki的伴侣图书馆。

Veldhuizen的原始文件是好的。 如果你整本书,那么Vandevoorde的书“C ++模板完整指南”。 当你准备好主人的课程时,试试Alexandrescu的Modern C ++ Design。

现代C ++devise:应用程序和devise模式