静元编程(又名"模板元编程")是一个伟大的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++静元编程,什么是最好的来源(书籍、网站、在线课件,什么)?

有帮助吗?

解决方案

[回答我自己的问题]

到目前为止,我发现的最佳介绍是第10章,“C ++中的静态元编程”。来自 Generative Programming,Methods,Tools and Applications ,来自Krzysztof Czarnecki和Ulrich W. Eisenecker,ISBN-13:9780201309775;和第17章,“Metaprograms”和 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节“<代码> NullType 和 EmptyType &quot;和2.10“类型特征”。

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

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

其他提示

Andrei Alexandrescu的现代C ++设计一书涵盖了很多内容快速高效的现代C ++代码的其他技巧,是 Loki 库的基础。

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

现代C ++设计,这是Alexandrescu出色的书籍和设计模式框架。警告的话,在读完这本书之后,我停止了做C ++,并且想到“我真的可以选择一种更好的语言并免费获得它”。

两个很好的书,想到的是:

  • 现代C++设计/安德烈*Alexandrescu(它实际上7岁,尽管这个名字!)
  • C++的模板:完整的指南/Vandevoorde&Josuttis

这是一个相当深入的领域,使一个良好的书状之一,这些肯定是建议通过网站。一些更先进的技术将有你研究所的代码一些时间弄清楚他们怎样工作!

Modern C ++ 是我读过的最佳介绍之一。它涵盖了模板元编程的实际有用示例。另请查看配套库 Loki

由于经验丰富的人员名单有限,因此不会有大量的书籍。模板元编程在2000年的第一个C ++模板编程研讨会上开始实现,到目前为止,很多作者都参加了。 (IIRC,Andrei没有。)这些先驱们对这个领域产生了很大的影响,现在基本上应该写的是什么。就个人而言,我建议Vandevoorde&amp;约祖蒂斯。如果你是这个领域的新手,Alexandrescu是一本很难的书。

Veldhuizen的原始论文很好。如果你读完整本书,那么就有Vandevoorde的书“C ++模板完整指南”。当你为硕士课程做好准备时,试试Alexandrescu的Modern C ++ Design。

谷歌Alexandrescu,现代C ++设计:应用通用编程和设计模式

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top