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 + + 静态元编程的知识,最好的资源是什么(书籍、网站、在线课件等等) ?

64201 次浏览

Google Alexandrescu,现代 c + + 设计: 应用泛型和设计模式

现代 C + + 是我读过的最好的介绍之一。它涵盖了模板超编程的实际有用的例子。还可以看一下同伴库 洛基

Andrei Alexandrescu 的 Modern C++ Design书籍涵盖了许多这方面的技巧和其他技巧,以提高现代 C + + 代码的速度和效率,并且是 洛基库的基础。

同样值得一提的是 加油库,它们大量使用这些技术,并且通常具有非常高的学习质量(尽管有些相当密集)。

Veldhuizen 的原始论文很好。如果你想看一整本书,那么 Vandevoorde 的书“ C + + 模板完整指南”。当你准备好上硕士课程的时候,试试亚历山德雷斯库的现代 C + + 设计。

现代 C + + 设计 ,一本杰出的书和 Alexandrescu 的设计模式框架。提醒一句,读完这本书后,我不再使用 C + + ,心想“管他呢,我可以选择一种更好的语言,免费使用”。

我突然想到的两本好书是:

  • 现代 c + + 设计/Andrei Alexandrescu (实际上它已经有7年的历史了!)
  • C + + 模板: 完整指南/Vandevoorde & Josuttis

这是一个相当深入的领域,所以像这样的一本好书肯定是推荐在网站上。一些更高级的技术将让您花费一些时间来研究代码,以了解它们是如何工作的!

[回答我自己的问题]

The best introductions I've found so far are chapter 10, "Static Metaprogramming in C++" from 生成式编程,方法,工具和应用 by Krzysztof Czarnecki and Ulrich W. Eisenecker, ISBN-13: 9780201309775; and chapter 17, "Metaprograms" of C + + 模板: 完整指南 by David Vandevoorder and Nicolai M. Josuttis, ISBN-13: 9780201734843.

alt text图片来源: img src = “ https://i.stack.imgur.com/FreHD.gif”alt = “ alt text”> 图片来源: img src = “ https://i.stack.imgur.com/89bSK.gif”alt = “ alt text”> 图片来源: img src = “ https://i.stack.imgur.com/FreHD.gif”alt = “ alt text”>alt text

Todd Veldhuizen 有一个很好的教程 给你

A good resource for C++ programming in general is 现代 C + + 设计 by Andrei Alexandrescu, ISBN-13: 9780201704310. This book mixes a bit of metaprogramming with other template techniques. For metaprogramming in particular, see sections 2.1 "Compile-Time Assertions", 2.4 "Mapping Integral Constants to Types", 2.6 "Type Selection", 2.7 "Detecting Convertibility and Inheritance at Compile Time", 2.9 "NullType and EmptyType" and 2.10 "Type Traits".

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

如果您只想要一本书,那么请获取 C + + 模板: 完整指南,因为它也是一般模板的权威参考。

不会有一个很大的书单,因为有很多经验的人的名单是有限的。模板超编程是在2000年第一届 C + + 模板编程研讨会前后开始的,到目前为止,许多被点名的作者都参加了研讨会。(IIRC,安德烈没有。)这些先驱者极大地影响了这个领域,基本上应该写的东西现在已经写出来了。就我个人而言,我建议 Vandevoorde & Josuttis。如果你是新手,亚历山德里斯库的书很难读。