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

隨筆-341  評論-2670  文章-0  trackbacks-0

最近學習C++11的variadic template argument,終于可以擺脫用fpmacro模板來復制一大堆代碼的做法了,好開心。這個例子的main函數用lambda寫了一個斐波那契數列的遞歸計算函數。跟以往不同的是,在Y函數的幫助下,這個lambda表達是可以成功看到自己,然后遞歸調用。當然這仍然需要用普通的C++遞歸來實現,并不是λ-calculus那個高大上的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) 評論(3)  編輯 收藏 引用 所屬分類: C++實用技巧

評論:
# re: 隨手擼了一個可以寫遞歸lambda的Y函數 2014-02-28 09:04 | Kimmy Leo
...TArgs 和 TArgs... 看起來好丑。  回復  更多評論
  
# re: 隨手擼了一個可以寫遞歸lambda的Y函數 2014-04-27 02:31 | Scan
第33行可以直接用
"return partialLambda( *this, args...);"
哇  回復  更多評論
  
# re: 隨手擼了一個可以寫遞歸lambda的Y函數 2014-05-12 07:41 | 陳梓瀚(vczh)
@Scan
對耶……
  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲视频日本| 在线视频欧美日韩| 亚洲福利电影| 亚洲电影在线看| 91久久一区二区| 亚洲伦理自拍| 亚洲宅男天堂在线观看无病毒| 亚洲最新合集| 午夜免费久久久久| 久久久欧美精品sm网站| 免费日韩一区二区| 亚洲靠逼com| 午夜在线不卡| 欧美a级大片| 国产精品久久久久久久7电影| 国产日产亚洲精品| 最新中文字幕一区二区三区| 亚洲少妇最新在线视频| 久久久久久国产精品一区| 欧美大学生性色视频| 中日韩美女免费视频网址在线观看| 午夜精品在线| 欧美另类视频| 红桃视频国产精品| 一区二区三欧美| 久久久久高清| 日韩一本二本av| 久久国产免费| 国产精品久久久亚洲一区| 精东粉嫩av免费一区二区三区| 亚洲激情视频在线| 久久久国产亚洲精品| 亚洲卡通欧美制服中文| 久久精品夜色噜噜亚洲aⅴ| 欧美日韩在线精品一区二区三区| 国产午夜精品在线观看| 宅男噜噜噜66国产日韩在线观看| 免费欧美视频| 欧美一区二区三区四区在线| 欧美日韩亚洲网| 91久久中文| 嫩草国产精品入口| 欧美在线观看一区二区| 国产精品日日摸夜夜摸av| 99亚洲精品| 欧美在线亚洲综合一区| 午夜精品福利一区二区蜜股av| 免费国产自线拍一欧美视频| 亚洲视频欧美视频| 欧美激情中文字幕一区二区| 精品va天堂亚洲国产| 欧美一区二区三区视频免费播放| 日韩视频免费大全中文字幕| 欧美1区3d| 亚洲精品国产精品乱码不99按摩| 久久综合色影院| 久久精品视频播放| 国产综合精品一区| 久久久久一区二区| 欧美一区永久视频免费观看| 国产欧美日韩精品a在线观看| 午夜精品久久99蜜桃的功能介绍| 在线一区二区三区四区| 国产精品久久久久三级| 午夜精品久久99蜜桃的功能介绍| 亚洲无人区一区| 国产亚洲精品bt天堂精选| 久久久久国产精品一区三寸| 久久av一区二区三区漫画| 激情综合网激情| 亚洲成人自拍视频| 欧美精品福利在线| 亚洲一区二区成人| 亚洲婷婷在线| 国产一区二区三区的电影| 久久艳片www.17c.com| 久久综合色影院| 亚洲精品一二三区| 中文欧美在线视频| 伊人狠狠色j香婷婷综合| 亚洲第一狼人社区| 国产精品wwwwww| 美脚丝袜一区二区三区在线观看 | 国产精品麻豆欧美日韩ww| 亚洲欧美日韩视频二区| 欧美一区二区视频97| 亚洲国产精品va在线观看黑人| 亚洲破处大片| 国产欧美在线观看| 亚洲风情在线资源站| 欧美性色综合| 免费欧美在线视频| 欧美三级乱码| 蜜桃av综合| 国产精品扒开腿爽爽爽视频| 久久先锋资源| 国产精品久久久久久超碰 | 久久久91精品国产| 欧美高清在线一区| 久久99在线观看| 亚洲第一偷拍| 欧美图区在线视频| 蜜桃av噜噜一区| 国产精品毛片a∨一区二区三区| 欧美主播一区二区三区| 欧美精品国产一区二区| 久久婷婷综合激情| 国产精品一区二区a| 亚洲欧洲日本国产| 在线精品国产成人综合| 亚洲欧美日韩综合国产aⅴ| 亚洲伦理自拍| 鲁大师影院一区二区三区| 久久精品亚洲一区二区| 欧美三级精品| 亚洲人成免费| 亚洲精品乱码| 欧美成在线视频| 欧美激情bt| 亚洲国产99精品国自产| 久久精品一区二区| 久久久久国产精品一区| 国产精品一区亚洲| 国产精品99久久久久久www| 亚洲免费高清| 欧美激情一区在线| 亚洲人成高清| 亚洲激情在线观看视频免费| 欧美亚洲专区| 欧美综合77777色婷婷| 国产精品亚洲第一区在线暖暖韩国| 亚洲国产精品小视频| 亚洲第一区色| 欧美69视频| 亚洲国产精品久久| 亚洲精品欧美精品| 欧美精品国产一区| 日韩午夜av电影| 亚洲香蕉成视频在线观看| 欧美日韩视频免费播放| 亚洲视频自拍偷拍| 欧美一区二区三区久久精品茉莉花 | 久久精品国产久精国产一老狼| 欧美日韩在线一区二区| 99视频超级精品| 亚洲欧美综合v| 国产乱码精品1区2区3区| 亚洲欧美亚洲| 欧美成黄导航| 一区二区三区国产精品| 欧美日韩一区二区三区在线观看免| 999在线观看精品免费不卡网站| 亚洲综合电影| 精品88久久久久88久久久| 免费观看一区| 一区二区三区精密机械公司 | 亚洲人成网站在线播| 欧美人成网站| 亚洲伊人久久综合| 老司机凹凸av亚洲导航| 亚洲精品麻豆| 国产精品一二三| 裸体女人亚洲精品一区| 国产精品视频xxx| 久久亚洲国产成人| 伊人久久大香线| 欧美激情影音先锋| 中日韩在线视频| 免费观看亚洲视频大全| 一本在线高清不卡dvd| 国产一区二区三区四区| 欧美精品首页| 久久精品一区二区三区不卡| 亚洲国产精品一区在线观看不卡| 亚洲在线不卡| 最新成人在线| 国产一区二区av| 欧美日韩黄色一区二区| 欧美一区在线直播| 一二三四社区欧美黄| 蜜臀av在线播放一区二区三区| 亚洲私人黄色宅男| 亚洲国产欧美国产综合一区| 欧美性猛交xxxx乱大交蜜桃| 免费成人在线观看视频| 欧美一区二区三区男人的天堂 | 欧美搞黄网站| 欧美一级播放| 一区二区三区四区在线| 亚洲国产日韩欧美在线动漫| 久久久精品tv| 欧美一级久久久| 亚洲综合精品四区| 日韩视频欧美视频| …久久精品99久久香蕉国产| 国产精品有限公司| 欧美吻胸吃奶大尺度电影| 欧美国产日韩xxxxx| 久久欧美中文字幕| 欧美一区免费|