当前位置: 首页 > 面试题库 >

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

程城
2023-03-14
问题内容

静态元编程(也称为“模板元编程”)是一种出色的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撰写的Generative Programming,Methods,Tools and Applications中的第10章“ C 中的静态元编程” ,ISBN-13:9780201309775;以及第17章“ 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“NullTypeEmptyType” 2.10“型特征”。

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

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



 类似资料:
  • 本文向大家介绍浅谈C++模板元编程,包括了浅谈C++模板元编程的使用技巧和注意事项,需要的朋友参考一下 所谓元编程就是编写直接生成或操纵程序的程序,C++ 模板给 C++ 语言提供了元编程的能力,模板使 C++ 编程变得异常灵活,能实现很多高级动态语言才有的特性(语法上可能比较丑陋,一些历史原因见下文)。模板元编程的根在模板。模板的使命很简单:为自动代码生成提供方便。提高程序员生产率的一个非常有效

  • 技术的学习是一个登山的过程。第一章是最为平坦的山脚道路。而从这一章开始,则是正式的爬坡。无论是我写作还是你阅读,都需要付出比第一章更多的代价。那么问题就是,付出更多的精力学习模板是否值得? 这个问题很功利,但是一针见血。因为技术的根本目的在于解决需求。那C++的模板能做什么? 一个高(树)大(新)上(风)的回答是,C++里面的模板,犹如C中的宏、C#和Java中的自省(restropection)

  • Boost.Call_traits 这个库提供了传递参数给函数的最好方法的自动演绎,依据参数的类型。例如,当传递的是如int 和 double这样的内建类型,最高效的方式是传值。对于用户自定义类型,则传送const引用通常更好。Call_traits为你自动选择正确的参数类型。这个库还有助于声明参数为引用,而不用冒引用到引用的风险(在C++这是非法的)。Call_traits常用于要求以最高效方式

  • 本文向大家介绍C++模板元编程实现选择排序,包括了C++模板元编程实现选择排序的使用技巧和注意事项,需要的朋友参考一下 前言 模板在C++一直是比较神秘的存在。 STL 和 Boost 中都有大量运用模板,但是对于普通的程序员来说,模板仅限于使用。在一般的编程中,很少会有需要自己定义模板的情况。但是作为一个有理想的程序员,模板是一个绕不过去的坎。由于C++标准的不断改进,模板的能力越来越强,使用范

  • 主要内容:最新自我介绍模板1,最新自我介绍模板2,最新自我介绍模板3最新自我介绍模板   来到一个完全陌生的环境,我们就有可能用到自我介绍,自我介绍是一种认识自我的手段。写起自我介绍来就毫无头绪?下面是小编收集整理的最新自我介绍模板,仅供参考,欢迎大家阅读。 最新自我介绍模板1   各位同学好,我是你们班的新数学老师,以后负责上你们班的数学课。大家对我相对不熟悉,但是我希望以后各位同学都支持我的工作,好好学习。   我的名字叫向南,很高兴我能成为一名老师,尤其是当

  • 计算机编程语言种类繁多,目前能够查询到的有 600 多种,常用的不超过 20 种, TIOBE 每个月都会发布世界编程语言排行榜,统计前 50 名编程语言的市场份额以及它们的变动趋势。该榜单反映了编程语言的热门程度,程序员可以据此来检查自己的开发技能是否跟得上趋势,公司或机构也可以据此做出战略调整。 这些编程语言根据不同的标准可以分为不同的种类,根据“在定义变量时是否需要显式地指明数据类型”可以分