Boost.Functionの実装方法はいくつかのサイトで紹介されているので(こことかここ) 私もBoost.Functionの実装技術について解説しよう Boost.FunctionではType Erasure(型削除型消去)というテクニックが使用されている 実際にBoost.Functionを作りながら解説しよう Boost.Functionは関数ポインタと関数オブジェクトを保持するようになっているので 今回は以下の使い方ができるように実装する int func(); struct func_obj { int operator()(); }; // 関数ポインタ・関数オブジェクトの保持 function<int> f1 = func; function<int> f2 = func_obj(); // 関数ポインタ・関数オブジェクトの実行 int result_func = f1()