有关C ++模板元编程的最佳介绍?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (24)

静态元编程(又名“模板元编程”)是一种很棒的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 中的第10章“C ++中的静态元编程”,来自Generative Programming,Methods,Tools,and Applications。和C ++模板的 “元变量”第17章 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 ++ Template Metaprogramming,ISBN-13:9780321227256

如果你只想要一本书,可以获取C ++模板:完整指南,因为它也是一般模板的明确参考。

用户回答回答于

Andrei Alexandrescu的“ 现代C ++设计”一书涵盖了许多快速高效的现代C ++代码以及其他技巧,并且是Loki库的基础。

另外值得一提的是Boost库,它们大量使用这些技术。

扫码关注云+社区