Item 48: Be aware of template metaprogramming.
模板元编程(Template Metaprogramming,TMP)就是利用模板来编写那些在编译时运行的C++程序。 模板元程序(Template Metaprogram)是由C++写成的,运行在编译器中的程序。当程序运行结束后,它的输出仍然会正常地编译。
C++并不是为模板元编程设计的...
分类:
其他好文 时间:
2016-02-19 12:44:17
阅读次数:
175
1.常量表达式constexpr:通常可用于修饰函数,变量以及构造函数等,以使得声明constexpr的关键字的函数和变量可以被用于编译时的计算。 2.constexpr元编程:是另一种编译时计算的手段(模板元编程),超越模板元编程的各种优势。 3.变长模板:C++引入的新的变长参数工具(远胜变长宏
分类:
其他好文 时间:
2016-02-17 19:06:26
阅读次数:
168
动态多态与静态多态动态多态:允许我们通过单个基类指针或引用处理多个派生类型的对象. 模板元编程中强调静态多态,允许不同类型的对象以同样的方式被操纵,只要它们支持某种共通的语法即可.动态多态,连同"延迟绑定"或"运行期派发",是面向对象程序的关键特性.静态多态(也称参数化多态),是泛型编程的本质要素....
分类:
Web程序 时间:
2015-11-20 22:58:23
阅读次数:
188
引用包装器 std::ref(变量)
#include
template
void com(T arg)//模板函数,引用无效,引用包装器
{
std::cout <<"com ="<< &arg << "\n";
arg++;
}
void main()
{
int count = 10;
int & rcount = count;
com(count);
std::cou...
分类:
编程语言 时间:
2015-10-02 08:59:36
阅读次数:
275
Template metaprogramming(TMP,模板元编程)这是写template-based C++规划。编译过程。template metaprogramming随着C++写模板程序,化的过程。也就是说,TMP程序运行后,从templates详细化出来C++源代码。不再...
分类:
编程语言 时间:
2015-09-14 09:20:40
阅读次数:
198
1. 模板元编程(template mataprogramming,TMP)是编写C++程序并执行于编译期的过程,"所谓template mataprogram(模板元程序),是以C++写成,执行于C++编译器内的程序.一旦TMP程序结束执行,其输出,也就是从templates具现出来的若干C++源...
分类:
编程语言 时间:
2015-09-12 16:10:54
阅读次数:
203
本来想把scanr,foldr什么的都写了的,一想太麻烦了,就算了,模板元编程差不多也该结束了,离开学还有10天,之前几天部门还要纳新什么的,写不了几天代码了,所以赶紧把这个结束掉,明天继续抄轮子叔的Win32库去。逻辑结构和递归说白了就是做了一个If,一个For_N,If就和Excel里的If一样...
分类:
编程语言 时间:
2015-09-03 20:25:00
阅读次数:
462
这是昨天和今天写的东西,利用C++的可变模板参数包以及包展开,模式匹配的一些东西做的,感觉用typename...比轮子叔那个List>>的设计要好看不少。List有一个很巧妙的继承,只有那么做才能使用类似于List::Rest的写法,直接定义成templateList是不行的。Change这里可以...
分类:
编程语言 时间:
2015-09-02 22:05:13
阅读次数:
290
这是博客开通前几天做的,C++的模板没办法存方便的浮点数,算了。基本类型的设计参考了vczh轮子叔模仿boost的MPL的设计。话说template和typename写多了真是无限烦人啊,不得已定义了几个宏,然后运算的定义也是用宏批量生成的。 1 template 2 struct PODType ...
分类:
编程语言 时间:
2015-09-02 18:57:27
阅读次数:
316
引言:模板是一种神奇的东西。涉及到模板的很多代码,都是编译器在编译阶段生成的。除了代码生成之外,编译器在处理模板时,还会进行一些计算。我们利用模板的这个特性,可以让编译器做一些数学运算。比如,让编译器计算阶乘,而不是在程序运行时计算阶乘:下面,使用模板在编译期计算斐波那契数列引入一个例子:// 主模...
分类:
编程语言 时间:
2015-08-07 12:41:51
阅读次数:
235