書きやすさ // 関数ポインタ void (*Func)(void); void (Foo::*Func2)(void); // std::function std::function<void(void)> Func; std::function<void(Foo*)> Func2; これは慣れてないと両方読みづらいかもしれませんね。 慣れるとfunctionの方が型名、変数名といういつものルールに従っているので分かりやすくなります。 運搬性 void Test(){} // 関数ポインタ using ReturnFunction = void (*)(); ReturnFunction Func(){ return Test; } // C++14から以下の書き方もできる auto Func(){ return Test; } // std::function std::functio