当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《C++模板元编程的最佳介绍?》经验,为你挑选了6个好方法。

静态元编程(又名"模板元编程")是一种很棒的C++技术,它允许在编译时执行程序.一读到这个规范的元编程示例,一个灯泡在我脑海中消失了:

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



1> jwfearn..:

[回答我自己的问题]

到目前为止,我发现的最好的介绍是Krzysztof Czarnecki和Ulrich W. Eisenecker的生成编程,方法,工具和应用的第10章"C++中的静态元编程" ,ISBN-13:9780201309775; 第17章,C++模板的 "Metaprograms" : 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++模板:完整指南,因为它通常也是模板的权威参考.


链接到Todd Veldhuizen的作品已经过时了.

2> Alaric..:

Andrei Alexandrescu的现代C++设计书涵盖了快速高效的现代C++代码的大量此类技巧和其他技巧,是Loki库的基础.

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



3> Florian Bösc..:

现代C++设计,Alexandrescu的精彩书籍和设计模式框架.警告的话,在读完这本书之后,我停止了做C++并且想到"什么,我可以选择一种更好的语言并免费获得".


C++模板元编程为您提供了各种新功能,如传递类型或类型列表作为参数等.大多数这些功能都存在于动态类型语言(如python)中,具有更好的语法.
"到底是什么,我可以选择一种更好的语言并免费获得它"嗯,你的意思是什么?我特别为"免费"而感到困惑.你还想到了其他什么语言?

4> Nik..:

想到的两本好书是:

现代C++设计/ Andrei Alexandrescu(尽管这个名字实际上已经有7年了!)

C++模板:完整指南/ Vandevoorde和Josuttis

这是一个非常深入的领域,因此绝对推荐一本像网站这样的好书.一些更高级的技术将让你研究代码一段时间,以弄清楚它们是如何工作的!



5> Eclipse..:

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



6> MSalters..:

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

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有