はじめに std::function は、関数ポインタだろうが関数オブジェクト(ラムダ式)だろうが、同様に受け入れてくれて等価に扱えるステキな型です。何より型の指定がわかりやすくて最高です。 std::function<double(double, int)> fn = [](d, i){ return d * i; }; double と int を引数に取り、double を返す関数を扱うことが自明です。ポインタ名が型の中に埋もれてしまう関数ポインタとは大違いです。 この std::function について、 テンプレートの型引数はどうやって実現しているか メモリアロケーションが発生するケース という2点について、調べた結果をまとめます。 型の指定について 私が std::function に惚れ込んだのは、何より型の指定が関数シグネチャそのもので分かりやすかったからなのですが、これ