boost 1.39.0 で入った Boost.Signals2 がよさげ

先日リリースされたboost 1.39.0で新しく追加されたBoost.Signals2がいい感じです。すでにBoost.Signalsというものがありましたが、これはBoostのビルドが必要でした。しかしSignals2ではヘッダだけで事足ります。さらに、Signalsと比べてスレッドセーフという利点も。

Qtのsignal/slotを知って以来、あれを使ったイベントハンドラがどこでも使えればなぁと思ってたので、今回のヘッダのみバージョンはとても助かります。signal/slotモデルがどういったものか分からない場合は、サンプルあたりを見てみてください。

Boost.Signals2を使うことで、以下のように割とQtに近い書き方ができるようになります。

MainForm mainForm;
ListView list;
Button button;

list.selected.connect(boost::bind(&MainForm::selectListItem, &mainForm));
button.clicked.connect(boost::bind(&MainForm::submit, &mainForm));

チュートリアルの初級者向けの部分だけ翻訳してみました(Boost Signals2 Tutorial)。気が向いたらそれ以外も翻訳します。