代码之家  ›  专栏  ›  技术社区  ›  jwfearn

C++模板元编程的最佳介绍?[关闭]

  •  109
  • jwfearn  · 技术社区  · 16 年前

    静态元编程(又名“模板元编程”)是一种伟大的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++静态元编程的知识,最好的资源是什么(书籍,网站,在线课件,什么)?

    8 回复  |  直到 6 年前
        1
  •  103
  •   community wiki 12 revs, 2 users 92% jwfearn    6 年前

    [回答我自己的问题]

    到目前为止,我发现的最好的介绍是第10章“C++中的静态元编程”。 生成式编程、方法、工具和应用程序 作者:Krzysztof Czarnecki和Ulrich W.Eisenecker,ISBN-13:9780201309775;第17章“元程序” C++模板:完整的指南 作者:David Vandevoorder和Nicolai M.Josuttis,ISBN-13:9780201734843。

    alt text alt text alt text alt text

    Todd Veldhuizen有一个很好的教程 here .

    C++编程的一个好资源 现代C++设计 作者:Andrei Alexandrescu,ISBN-13:9780201704310。这本书混合了一些元编程和其他模板技术。特别是元编程,请参见第2.1节“编译时断言”、第2.4节“将整型常量映射到类型”、第2.6节“类型选择”、第2.7节“在编译时检测可转换性和继承性”、第2.9节。 NullType EmptyType 和2.10“类型特征”。

    我找到的最好的中级/高级资源是 C++模板元程序设计 作者:David Abrahams和Aleksey Gurtovoy,ISBN-13:9780321227256

    如果你只想要一本书,就买 C++模板:完整的指南 因为它通常也是模板的最终参考。

        2
  •  23
  •   Dan Forbes    10 年前

    Andrei Alexandrescu的 Modern C++ Design 这本书涵盖了许多这方面和其他技巧,为快速和高效的现代C++代码,是基础 Loki 图书馆。

    同样值得一提的是 Boost 图书馆大量使用这些技术,通常具有很高的学习质量(尽管有些图书馆相当密集)。

        3
  •  12
  •   Florian Bösch    16 年前

    Modern C++ Design 这是亚历山大·埃斯库的一本杰出的书和设计模式框架。在我读了这本书之后,我停止了C++,并想:“见鬼,我可以选一种更好的语言,免费得到它”。

        4
  •  6
  •   Nik    16 年前

    两本好书浮现在人们的脑海中:

    • 现代C++设计/ Andrei Alexandrescu(实际上它已经7年了,尽管有名字!)
    • C++模板:完整指南/ VANDEOORDE和Josuttis

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

        5
  •  5
  •   Salman A    16 年前

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

        6
  •  5
  •   MSalters    16 年前

    不会有一大堆书,因为经验丰富的人的名单是有限的。模板元编程始于2000的第一个C++模板编程研讨会,许多作者都参加了。(IIRC,安德烈没有)这些先驱们对这个领域有很大的影响,基本上应该写什么现在就写了。就我个人而言,我建议范德沃德和约瑟提斯。亚历山德里斯科的书是一本很难的书,如果你是新手。

        7
  •  4
  •   eduffy    16 年前

    韦尔德胡森的原著很好。如果你想要一本书,那就是Vandevoorde的书《C++模板完全指南》。当你准备好硕士课程时,试试Alexandrescu的现代C++设计。

        8
  •  4
  •   Maxim Ananyev    16 年前

    谷歌AlxEnthReCu,现代C++设计:泛型编程和设计模式应用