模板元编程技术是一种元编程技术,编译器使用模板产生暂时性的源码,然后再和剩下的源码混合编译。在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
模板元编程根在模板,模板的使用很简单:为自动代码生成提供方便,提高程序员生产率的一个非常有效的方法就是代码复用,而面向对象很重要的一个贡献就是通过内部紧耦合和外部松耦合将思想转化成一个个容易复用的概念,但是面向对象提供的工具箱里面包含了所包含的继承,组合和多态并不能完全满足实际编程总对于代码复用的全...
分类:
编程语言 时间:
2014-11-08 16:29:19
阅读次数:
135
经验:Template metaprogramming (TMP, 模板元编程)可将工作由运行期移往编译期,因而得以实现早期错误侦测和更高的执行效率
示例1:
template
void advance(IterT &iter, DistT d){
if(typeid(typename std::iterator_traits::iterator_catogory) == typeid(std::random_access_it...
分类:
编程语言 时间:
2014-07-16 13:20:54
阅读次数:
313
文章分析如何在C++11中实现简单的placeholder。...
分类:
编程语言 时间:
2014-07-08 16:08:28
阅读次数:
268
Wrote by mutouyun. (http://darkc.at/cxx-type-list/)
群里有个朋友要实现这么一个功能:如何在编译期把一个函数类型的参数减少一个。
简单来说,就是实现下面这个模板:
remove_func_par::type; // type = void(int, long)
根据输入的编译期整数,把函数参数表里对应的参数干掉一个。
为了实现...
分类:
编程语言 时间:
2014-06-05 06:04:09
阅读次数:
273
基于模板元编程技术的跨平台C++动态链接加载库。通过模板技术,使用者仅需通过简单的宏,即可使编译器在编译期自动生成加载动态链接库导出符号的代码,无任何额外的运行时开销。...
分类:
编程语言 时间:
2014-06-01 14:10:36
阅读次数:
405
开始学习模板元编程了
#include
#include
#include
#include
#include "boost/assign/list_of.hpp"
#include "boost/type_traits/is_const.hpp"
#include "boost/type_traits/is_reference.hpp"
#include "boost/type_tr...
分类:
其他好文 时间:
2014-05-07 16:32:27
阅读次数:
358