青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-341  評(píng)論-2670  文章-0  trackbacks-0

最近學(xué)習(xí)C++11的variadic template argument,終于可以擺脫用fpmacro模板來復(fù)制一大堆代碼的做法了,好開心。這個(gè)例子的main函數(shù)用lambda寫了一個(gè)斐波那契數(shù)列的遞歸計(jì)算函數(shù)。跟以往不同的是,在Y函數(shù)的幫助下,這個(gè)lambda表達(dá)是可以成功看到自己,然后遞歸調(diào)用。當(dāng)然這仍然需要用普通的C++遞歸來實(shí)現(xiàn),并不是λ-calculus那個(gè)高大上的Y Combinator。

?

#include <functional>

#include <memory>

#include <iostream>

#include <string>

?

using namespace std;

?

template<typename TResult, typename ...TArgs>

class YBuilder

{

private:

????function<TResult(function<TResult(TArgs...)>, TArgs...)> partialLambda;

?

public:

????YBuilder(function<TResult(function<TResult(TArgs...)>, TArgs...)> _partialLambda)

????????:partialLambda(_partialLambda)

????{

????}

?

????TResult operator()(TArgs ...args)const

????{

????????return partialLambda(

????????????[this](TArgs ...args)

????????????{

????????????????return this->operator()(args...);

????????????}, args...);

????}

};

?

template<typename TMethod>

struct PartialLambdaTypeRetriver

{

????typedef void FunctionType;

????typedef void LambdaType;

????typedef void YBuilderType;

};

?

template<typename TClass, typename TResult, typename ...TArgs>

struct PartialLambdaTypeRetriver<TResult(__thiscall TClass::*)(function<TResult(TArgs...)>, TArgs...)>

{

????typedef TResult FunctionType(TArgs...);

????typedef TResult LambdaType(function<TResult(TArgs...)>, TArgs...);

????typedef YBuilder<TResult, TArgs...> YBuilderType;

};

?

template<typename TClass, typename TResult, typename ...TArgs>

struct PartialLambdaTypeRetriver<TResult(__thiscall TClass::*)(function<TResult(TArgs...)>, TArgs...)const>

{

????typedef TResult FunctionType(TArgs...);

????typedef TResult LambdaType(function<TResult(TArgs...)>, TArgs...);

????typedef YBuilder<TResult, TArgs...> YBuilderType;

};

?

template<typename TLambda>

function<typename PartialLambdaTypeRetriver<decltype(&TLambda::operator())>::FunctionType> Y(TLambda partialLambda)

{

????return typename PartialLambdaTypeRetriver<decltype(&TLambda::operator())>::YBuilderType(partialLambda);

}

?

int _tmain(int argc, _TCHAR* argv[])

{

????auto fib = Y([](function<int(int)> self, int index)

????{

????????return index<2

?????????????1

????????????:self(index-1)+self(index-2);

????});

?

????for (int i = 0; i < 10; i++)

????{

????????cout << fib(i) << " ";

????}

????cout << endl;

}

posted on 2014-02-28 08:34 陳梓瀚(vczh) 閱讀(11145) 評(píng)論(3)  編輯 收藏 引用 所屬分類: C++實(shí)用技巧

評(píng)論:
# re: 隨手?jǐn)]了一個(gè)可以寫遞歸lambda的Y函數(shù) 2014-02-28 09:04 | Kimmy Leo
...TArgs 和 TArgs... 看起來好丑。  回復(fù)  更多評(píng)論
  
# re: 隨手?jǐn)]了一個(gè)可以寫遞歸lambda的Y函數(shù) 2014-04-27 02:31 | Scan
第33行可以直接用
"return partialLambda( *this, args...);"
哇  回復(fù)  更多評(píng)論
  
# re: 隨手?jǐn)]了一個(gè)可以寫遞歸lambda的Y函數(shù) 2014-05-12 07:41 | 陳梓瀚(vczh)
@Scan
對(duì)耶……
  回復(fù)  更多評(píng)論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            99精品免费视频| 亚洲影视综合| 亚洲欧美日韩一区二区在线| 一本大道久久精品懂色aⅴ| 一区在线观看视频| 亚洲成色999久久网站| 亚洲高清视频一区二区| 亚洲精品日韩久久| 亚洲视频播放| 久久av一区二区三区亚洲| 久久久久久久一区二区| 玖玖视频精品| 最近中文字幕mv在线一区二区三区四区| 免费在线亚洲欧美| 亚洲伦理在线免费看| 亚洲视频一区二区在线观看| 欧美一区二区三区视频在线| 久久午夜视频| 欧美无乱码久久久免费午夜一区| 国产精品免费一区二区三区在线观看| 国模私拍视频一区| 99精品视频免费观看视频| 欧美怡红院视频| 欧美激情女人20p| 亚洲欧洲一区| 在线一区二区三区四区五区| 久久久久久综合| 亚洲精选国产| 久久久在线视频| 欧美日韩免费观看一区| 国产一区二区三区在线观看免费| 亚洲伦理自拍| 另类春色校园亚洲| 亚洲先锋成人| 欧美人与禽性xxxxx杂性| 国产一本一道久久香蕉| 艳妇臀荡乳欲伦亚洲一区| 久久一区二区三区四区五区| 日韩一级在线| 欧美h视频在线| 韩国一区二区在线观看| 亚洲午夜精品| 亚洲精美视频| 欧美本精品男人aⅴ天堂| 国内精品久久久久影院 日本资源 国内精品久久久久伊人av | 亚洲精品乱码久久久久久日本蜜臀| 午夜欧美精品| 国产精品99一区二区| 亚洲精品少妇网址| 蜜臀av性久久久久蜜臀aⅴ四虎 | 欧美成人精品高清在线播放| 国产日韩欧美视频| 亚洲自拍偷拍麻豆| 日韩亚洲欧美精品| 欧美精品一区视频| 亚洲日本欧美| 亚洲第一福利在线观看| 久久精品国产综合| 国产亚洲一区二区三区在线观看 | 国产伦理一区| 亚洲一区二区免费在线| 91久久午夜| 欧美日韩国产成人在线| 日韩视频免费观看| 亚洲精品国产精品乱码不99| 免费久久精品视频| 亚洲精品乱码久久久久久日本蜜臀 | 国产精品激情| 欧美一区免费| 欧美一区二区三区视频免费播放| 国产日韩一区二区三区| 午夜精彩国产免费不卡不顿大片| 欧美一区二区三区的| 99精品国产99久久久久久福利| 欧美极品色图| 在线亚洲美日韩| 这里只有视频精品| 国产精品一区二区在线观看| 先锋影音网一区二区| 亚洲摸下面视频| 国产欧美视频一区二区三区| 久久精品国内一区二区三区| 欧美中文字幕在线播放| 在线观看国产一区二区| 亚洲高清不卡一区| 欧美日韩国产色视频| 亚洲欧美大片| 欧美专区福利在线| 亚洲电影av在线| 亚洲三级免费电影| 国产精品亚洲片夜色在线| 久久久无码精品亚洲日韩按摩| 久久久中精品2020中文| 99国产欧美久久久精品| 小黄鸭视频精品导航| 亚洲国产高清在线| 日韩视频久久| 伊人精品成人久久综合软件| 亚洲精品中文字幕有码专区| 国产欧美一区二区三区在线看蜜臀| 欧美1区免费| 国产精品久久夜| 亚洲国产二区| 国产一区二区三区黄视频| 亚洲黄色av一区| 国产一区二区三区在线观看视频| 亚洲高清在线观看| 国产九九视频一区二区三区| 欧美国产欧美亚洲国产日韩mv天天看完整 | 久久xxxx| 欧美精品一区二区精品网 | 性欧美1819sex性高清| 亚洲高清一区二| 夜夜爽99久久国产综合精品女不卡| 国产日韩在线一区| 亚洲精品日韩综合观看成人91| 国产日韩欧美不卡在线| 亚洲国产另类精品专区| 国产精品色网| 亚洲精品一二| 亚洲激情一区| 久久久久久免费| 欧美综合国产| 国产精品国产馆在线真实露脸 | 欧美电影在线免费观看网站| 欧美在线亚洲在线| 欧美午夜激情视频| 亚洲精品视频在线| 亚洲精品视频啊美女在线直播| 久久久人成影片一区二区三区| 销魂美女一区二区三区视频在线| 欧美激情1区2区| 欧美va亚洲va香蕉在线| 国产日本欧美视频| 亚洲一区尤物| 亚洲欧美日韩在线播放| 欧美三区美女| 一区二区日韩免费看| 一区二区高清在线观看| 欧美激情亚洲精品| 亚洲精品国产精品久久清纯直播 | 中文欧美日韩| 欧美福利网址| 亚洲精选国产| 午夜视频一区在线观看| 国产欧美精品日韩| 小辣椒精品导航| 噜噜噜噜噜久久久久久91| 好看的日韩视频| 久久一区激情| 91久久精品国产| 一区二区三区www| 国产精品人人做人人爽| 欧美一级日韩一级| 免费观看成人www动漫视频| 亚洲国内精品| 欧美日韩综合一区| 欧美在线影院在线视频| 欧美二区在线播放| 亚洲调教视频在线观看| 国产欧美韩国高清| 麻豆乱码国产一区二区三区| 亚洲娇小video精品| 午夜电影亚洲| 亚洲激情视频网站| 国产精品素人视频| 久久伊人亚洲| aa国产精品| 狼人社综合社区| 亚洲视频 欧洲视频| 国产综合网站| 欧美日韩综合视频网址| 久久久精品国产一区二区三区| 最新日韩中文字幕| 久久成人国产精品| 亚洲精品在线一区二区| 国产精品婷婷午夜在线观看| 老司机免费视频一区二区| 一区二区三区黄色| 久久综合色综合88| 亚洲调教视频在线观看| 精品二区视频| 国产精品美女999| 欧美高清在线播放| 久久精品国产亚洲5555| 一本色道久久综合亚洲精品不 | 亚洲综合另类| 亚洲黄色成人网| 久久久免费av| 亚洲欧美激情一区二区| 亚洲精品日韩在线观看| 久久精品亚洲热| 夜夜狂射影院欧美极品| 欧美国产视频在线观看| 欧美一区二区久久久| 日韩午夜在线电影| 亚洲第一精品福利| 精品91久久久久| 国产一区二区毛片| 国产美女精品一区二区三区|