function + bindを使ったType Erasure オブジェクトをboost::anyでメンバに持ち、anyにコピーしたオブジェクトを元の型に変換してbind。 boost::any_cast(obj_)だと余計なコピーが発生してしまうので、any_castにはポインタを渡している。 メンバ変数の宣言順(初期化順)に注意、obj_が最初。 #include <boost/function.hpp> #include <boost/bind.hpp> #include <boost/any.hpp> class GameScene { boost::any obj_; boost::function<void()> update_func_; boost::function<void()> draw_func_; public: GameScene() {} template <