2.2 loop unrolling 循环展开前面enum一节介绍的是和template联合,引发编译器递归的奇妙作用。template本身无需enum配合也可以达到递归的效果。// test template recursive for loop unrolling
cout << "test 2: template recursive for loop unrolling" << en...
分类:
编程语言 时间:
2015-04-05 17:32:12
阅读次数:
222
2.1 用enum做数值计算下面两篇文章都介绍了模板元编程,enum是其最重要的基本工具 http://www.codeproject.com/Articles/3743/A-gentle-introduction-to-Template-Metaprogramming https://www10.informatik.uni-erlangen.de/~pflaum/pflaum/ProSemin...
分类:
编程语言 时间:
2015-04-05 17:31:44
阅读次数:
118
2.3 if 替代将if语句放在编译期执行,可以用模板特化的方式实现。下面是调用代码:// test if
cout << "test if" << endl;
If::Run();
输出结果为:test if
it's false
模板类的实现如下:template
class If {
public:
static inline void Run() {
cout << "it's...
分类:
编程语言 时间:
2015-04-05 17:31:41
阅读次数:
133
C++可看作由以下四种次语言组合而成1.C语言 高效,内置数据类型,数组,区块,语句,指针,预处理器,没有重载、异常、模板2.类 构造,析构,封装,继承,多态,迟绑定3.模板 模板元编程,不关心数据类型,只关心数据结构与算法4.STL 标准模板库,容器,迭代器,算法,函数对象
分类:
编程语言 时间:
2015-03-28 23:13:41
阅读次数:
178
今天遇到这样一个问题,我现在有一个整数数组,如:var numbers = [3, 7, 12, 9, 200]现需要对其中的每一个数字都执行一系列相同的加减乘除操作,如对每一个数字都加5乘8再减去1,但是这样的操作在编译时并不确定,需要在运行时由用户指定;一看到这个题目,当然就想到了用设计模式中的...
分类:
编程语言 时间:
2015-03-15 15:10:43
阅读次数:
183
01.视C++为一个语言联邦
CObject-Oriented C++Template C++STL
过程形式(procedural),面向对象形式(object-oriented),函数形式(functional),泛型形式(generic),元编程形式(metaprogramming)
问题:
泛型形式和元编程形式的区别?
过程形式和函数形式的区别?
结论:...
分类:
编程语言 时间:
2015-03-11 23:32:01
阅读次数:
430
模板元编程技术是一种元编程技术,编译器使用模板产生暂时性的源码,然后再和剩下的源码混合编译。在Wiki上是这么说的:http://zh.wikipedia.org/wiki/%E6%A8%A1%E6%9D%BF%E8%B6%85%E7%B7%A8%E7%A8%8B。
由于是在编译时执行,那么就需要编译时执行的操作,比如宏,typedef,const,enum等等。
下面是一个使用模...
分类:
其他好文 时间:
2015-03-04 14:44:50
阅读次数:
131
范例:// 主模板templatestruct Fib{ enum { Result = Fib::Result + Fib::Result };};// 完全特化版template struct Fib{ enum { Result = 1 };};// 完全特化版template s...
分类:
编程语言 时间:
2015-02-27 13:27:26
阅读次数:
154
C++拾遗--模板元编程
前言
模板元是用于递归加速的,把运行期的函数调用变到编译期进行代码展开,类似于内联函数。下面看一个实例:斐波那契数列第n项求解。
模板元编程...
分类:
编程语言 时间:
2015-02-19 16:22:17
阅读次数:
284