最好的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撰写的Generative Programming,Methods,Tools and Applications中的第10章“ C 中的静态元编程” ,ISBN-13:9780201309775;以及第17章“ C 模板的“元程序” : David Vandevoorder和Nicolai M. Josuttis的完整指南,ISBN-13:9780201734843。

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

一般来说,C 编程的一个很好的资源是Andrei Alexandrescu撰写的Modern C Design,ISBN-13:9780201704310。这本书将一些元编程与其他模板技术混合在一起。特别是对于元编程,见2.1节“编译时断言”,2.4“映射整型常量到类型”,2.6“选型” 2.7“检测可兑换性和继承在编译时间”,2.9“NullTypeEmptyType” 2.10“型特征”。

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

如果您只喜欢一本书,请获取《C ++模板:完整指南》,因为它通常还是模板的权威参考。