把一个非延缓评估的元函数转换为一个延缓评估的元函数(Lazy evaluation)

原创 2013年12月04日 15:22:58

在C++的模板元编程中,如果使用了T::type , T::value , T::apply之类的语法,其将导致编译器立马对该类型表达式进行求值,有些时候,这些求值工作是不必要的,将增加编译器的编译时间,我们可以将之延迟到最后一刻确实需要进行类型计算的时候再去求值,此称之为Lazy evaluation。

下面通过Lazy_If_T 为例演示了如何把一个非延缓评估的元函数转换为延迟评估的元函数----此模板源代码的应用示例可以到我的资源中的"博客中的mini泛型库源代码"中去下载。


template<bool,typename True_T,typename False_T> struct If_T  //default is true

{
typedef True_T type;
};
template<typename True_T,typename False_T> struct If_T<false,True_T,False_T>
{
typedef False_T type;
};


//for lazy evaluation
template<typename B,typename True_T,typename False_T> struct Lazy_If_T : public If_T<B::value,True_T,False_T>::type 

 {};

//---------使用Lazy_If_T ,编译器将不会对Lazy_If_T 的type立即进行求值计算,而仅仅作一个类型标记,待到确实需要时,再进行计算,节省了编译时间。

机器学习模型评价(Evaluating Machine Learning Models)-主要概念与陷阱

机器学习模型评价(Evaluating Machine Learning Models)-主要概念与陷阱   本文主要解释一些关于机器学习模型评价的主要概念,与评价中可能会遇到的一些陷阱。如训练集-验...
  • heyongluoyao8
  • heyongluoyao8
  • 2015年10月31日 22:46
  • 36106

在Java中使用weka:手动生成并输出对分类器的评估

书读的少,翻译的不好别打我
  • Bryan__
  • Bryan__
  • 2014年11月02日 23:34
  • 2146

xgboost cross_validation&自定义目标函数和评价函数&base_score参数

1、 Xgboost参数的选择: base_score:对于所有样本预测为正样本的全局偏置(the initial prediction score of all instances, globa...
  • lujiandong1
  • lujiandong1
  • 2016年10月11日 19:58
  • 5590

lazy evaluation缓式评估

lazy evaluation缓式评估                    --需要读取n多配置项,如何加速程序的启动过程 当你还是小孩的时候,父母要你清理房间的情景,你还记得吗?如果你和我一样...
  • tiananmen0604
  • tiananmen0604
  • 2014年09月03日 17:09
  • 247

Winsows Server 2012 Datacenter Evaluation Build 9200数据中心评估版GUI 64bit(许可180天)(单用户使用,非傻瓜式优化部分)

Winsows Server 2012 Datacenter Evaluation Build 9200数据中心评估版GUI 64bit(许可180天) (单用户使用,非傻瓜式优化部分) 1....
  • dubois2007
  • dubois2007
  • 2013年09月08日 16:23
  • 913

用遗传算法实现六子棋评估函数参数优化

  • 2014年05月05日 20:51
  • 499KB
  • 下载

MS COCO数据集目标检测评估(Detection Evaluation)(来自官网)

目标检测评估 1. Detection Evaluation 本页介绍了COCO使用的检测评估指标。此处提供的评估代码可用于在公开可用的COCO验证集上获得结果。它计算下面描述的多个指标。为了...
  • u014734886
  • u014734886
  • 2017年12月18日 12:52
  • 221

C++ 之 over-eager evaluation 超前评估

C++之超急评估 over-eager evaluation vs. eager evaluation vs. lazy evaluation 在前面已经提到了C++地懒惰求值:不要为你程序功...
  • C12345SDN
  • C12345SDN
  • 2014年12月07日 16:46
  • 1112

LM3S8962 EVALUATION KIT README FIRST(LM3S8962评估套件说明文档)

前言:一个月前在网站上填写了一份TI的LM3S8962评估套件的免费申请,当时也没有抱有多大希望。一个月之后,就在我已经将这件事忘记的时候,竟然意外的收到了这个从上海总库邮寄到的评估套件。看到这里面的...
  • zhzht19861011
  • zhzht19861011
  • 2011年08月14日 17:47
  • 3644

数据挖掘中的模式发现(四)模式评估(Pattern Evaluation)

Pattern Evaluation简介模式评估指的是根据某种兴趣度度量,识别代表知识的真正有趣的模式。 我们之前通过support-confidence association rule mini...
  • u013007900
  • u013007900
  • 2017年02月03日 10:39
  • 1244
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:把一个非延缓评估的元函数转换为一个延缓评估的元函数(Lazy evaluation)
举报原因:
原因补充:

(最多只允许输入30个字)