タグ

ブックマーク / secret-garden.hatenablog.com (2)

  • C++ のラムダ式を型推論しながら関数ポインタ型で受け取る - Secret Garden(Instrumental)

    ほぼ使うことはないだろうけど、かなりの知見だったので覚書。 ラムダ式を関数ポインタ型へ変換する これは割と一般的な知識だと思うんですが、『キャプチャしていない』ラムダ式は関数ポインタ型へとキャストする事が出来ます。 using func_t = int(*)(int); // 関数ポインタ型として受け取る事が出来る func_t twice = [](int n){ return n + n; }; + 単項演算子で明示的に関数ポインタ型に変換する さて、これを踏まえて次のように『関数ポインタ型を型推論する』ような関数にラムダ式を渡したいとします。 // テンプレートで戻り値型や引数型を推論するよ template<typename R, typename A> void func(R(*f)(A)){ } // error: no matching function for call t

    C++ のラムダ式を型推論しながら関数ポインタ型で受け取る - Secret Garden(Instrumental)
  • 【C++ Advent Calendar 2016 13日目】C++ で楽しく Expression Templates しよう - Secret Garden(Instrumental)

    C++ Advent Calendar 2016 13日目の記事です。 13日目が空いてるようなのでちょっと Expression Templates というマニアックなネタでも。 まあ C++ プロの方なら Expression Templates なんて余裕ですよね。 [注意] 記事のコードは基的には C++14 に準じているので、自環境で試したい場合は注意してください。 [Expression Templates とは] Expression Templates とは wikibooks から引用すると C/C++ において数学的な式を評価するありふれたやり方として、関数中に式をラップし、その関数ポインタを渡して、入力された数値群に対して適用するというものがある。この方法では、関数呼び出しと一時オブジェクト生成のオーバーヘッドが生じる。また、ソース中の式の位置が呼び出し元から非常

    【C++ Advent Calendar 2016 13日目】C++ で楽しく Expression Templates しよう - Secret Garden(Instrumental)
    agw
    agw 2019/04/02
  • 1