<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      2025.3.26 鮮花

      如何優雅的將 lambda 轉化為函數指針

      lemon
      夢(ゆめ)ならばどれほどよかったでしょう
      未(いま)だにあなたのことを夢(ゆめ)にみる
      忘(わす)れた物(もの)を取(と)りに帰(かえ)るように
      古(ふる)びた思(おも)い出(で)の埃(ほこり)を払(はら)う
      戻(もど)らない幸(しあわ)せがあることを
      最後(さいご)にあなたが教(おし)えてくれた
      言(い)えずに隠(かく)してた昏(くら)い過去(かこ)も
      あなたがいなきゃ永遠(えいえん)に昏(くら)いまま
      きっともうこれ以上(いじょう) 傷(きず)つくことなど
      ありはしないとわかっている
      あの日(ひ)の悲(かな)しみさえ
      あの日(ひ)の苦(くる)しみさえ
      そのすべてを愛(あい)してた あなたとともに
      胸(むね)に殘(のこ)り離(はな)れない
      苦(にが)いレモン(れもん)の匂(にお)い
      雨(あめ)が降(ふ)り止(や)むまでは帰(かえ)れない
      今(いま)でもあなたはわたしの光(ひかり)
      暗闇(くらやみ)であなたの背(せ)をなぞった
      その輪廓(りんかく)を鮮明(せんめい)に覚(おぼ)えている
      受(う)け止(と)めきれないものと出會(であ)うたび
      溢(あふ)れてやまないのは涙(なみだ)だけ
      何(なに)をしていたの
      何(なに)を見(み)ていたの
      わたしの知(し)らない橫顏(よこがお)で
      どこかであなたが今(いま)
      わたしと同(おな)じ様(よう)な
      涙(なみだ)にくれ 淋(さび)しさの中(なか)にいるなら
      わたしのことなどどうか 忘(わす)れてください
      そんなことを心(こころ)から愿(ねが)うほどに
      今(いま)でもあなたはわたしの光(ひかり)
      自分(じぶん)が思(おも)うより 戀(こい)をしていたあなたに
      あれから思(おも)うように 息(いき)ができない
      あんなに側(そば)にいたのにまるで噓(うそ)みたい
      とても忘(わす)れられないそれだけが確(たし)か
      あの日(ひ)の悲(かな)しみさえ
      あの日(ひ)の苦(くる)しみさえ
      その全(すべ)てを愛(あい)してたあなたと共(とも)に
      胸(むね)に殘(のこ)り離(はな)れない
      苦(にが)いレモン(れもん)の匂(にお)い
      雨(あめ)が降(ふ)り止(や)むまでは帰(かえ)れない
      切(き)り分(わ)けた果実(かじつ)の片方(かたほう)の様(よう)に
      今(いま)でもあなたはわたしの光(ひかり)
      
      

      這個東西屬于是一般用不到,但是萬一想用了一整就是半天,趁這次整好了趕緊記一下。

      眾所周知的,沒有捕獲的 lambda 可以輕松轉成函數指針,于是我們可以這么寫。

      bool (*f)(int, int) = [](int a, int b){return a > b;};
      

      但是如果有捕獲呢?

      我們知道,lambda 可以直接訪問它可以看到的全局變量,這里的全局變量是包括 static 的,所以如果我們吧捕獲的變量前加上 static,也就可以不捕獲直接訪問了,類似:

      int main(){
      	ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
      	static int a = 0;
      	auto f = [](){++a;};
      	f();
      	cout << a << endl;
      }
      

      但是這很傻,于是我們想找個更好的方式。不妨換個角度想,因為 lambda 內是可以調用 lambda 的,所以如果我們吧它變成另一個 static 的 lambda 中調用,就成功了:

      template <class F>
      auto T(F f){
      	static auto ff = forward<F>(f);
      	return [](int a, int b){return ff(a, b);};
      }
      
      bool (*f)(int, int) = T([&x](int a, int b){return a + x < b;});
      

      美中不足的是,雖然我們成功的用 auto 避免了提前知道返回值類型,但是我們不可避免的要提前知道傳參類型,不夠泛化。

      眾所周知的,對于一個類的靜態函數是也可以直接轉換成函數指針的,于是我們用類來替換掉最外層的 lambda,加上一些元編程技巧(和對網上一眾工程代碼的簡化),可以得到:

      namespace Trans{
      	template <class F, class... A>
      	struct Fn{
      		static const F *f;
      		static auto R(A... a){ return (*f)(forward<A>(a)...); }
      	};
      	template <class F, class... A> const F *Fn<F, A...>::f;
      	template <class... A, class F>
      	auto Trs(F &&f){
      		static F ff = forward<F>(f);
      		Fn<F, A...>::f = &ff;
      		return &Fn<F, A...>::R;
      	}
      } using Trans::Trs;
      
      bool (*f)(int, int) = Trs<int, int>([&x](int a, int b){return a + x > b;});
      

      也并不是很長。或許有點用?

      P

      \

      posted @ 2025-03-26 12:15  xrlong  閱讀(50)  評論(2)    收藏  舉報

      Loading

      主站蜘蛛池模板: 无码人妻丝袜在线视频| 色老板精品无码免费视频| 又大又紧又粉嫩18p少妇| 中年国产丰满熟女乱子正在播放| 人妻中文字幕一区二区三| 中国丰满少妇人妻xxx性董鑫洁| 国产精品美女久久久久久麻豆| 亚洲综合成人av在线| 在线观看国产成人av天堂| 国产农村妇女毛片精品久久| 精品视频在线观看免费观看| 国产毛片精品一区二区色| 热久久美女精品天天吊色| 亚洲精品国产精品乱码不| 小嫩模无套内谢第一次| 人人干人人噪人人摸| 伊人色综合九久久天天蜜桃| 国产亚洲av日韩精品熟女| 在线精品国产中文字幕| 亚洲中文字幕一区二区| 欧美日韩在线第一页免费观看| 国产在线精品欧美日韩电影 | 亚洲综合精品第一页| 丰满少妇被猛烈进出69影院| 视频一区二区三区在线视频| 国产成年码av片在线观看| 国产熟女一区二区三区四区| 激情国产一区二区三区四区小说| 精品人妻少妇一区二区三区| 欧美精品亚洲精品日韩专区| 国产激情av一区二区三区| 国内不卡不区二区三区| 成人午夜看黄在线尤物成人| av一区二区中文字幕| 国产免费无遮挡吸奶头视频| 日韩一区二区三区一级片| √天堂中文www官网在线| 福利视频一区二区在线| 国产区一区二区现看视频| 91精品91久久久久久| 亚洲国产日韩a在线播放|