std::functionをシリアライズできなくてつらい
例えばウィンドウがリサイズされたときの処理を設定するとき、
Window window; window.on_resize() += [](int width, int height) { /* リサイズされたときの処理 */ };
のように書いて、Windowクラスのほうではstd::function(boost::function)で保持しようかと思っていました。 しかしそうするとWindowクラスをBoost.Serializationでシリアライズできなくなってしまいます。
フリー関数やラムダ関数をシリアライズするのは不可能なので*1、関数オブジェクトのインターフェースクラスを定義して、それを継承したクラスを用意するという、C++03時代の方法しかなさそうです。
つらい。
*1:少なくともポータブルな方法は無い