toge's diary

コンピュータ関連の趣味をつらつらと。

[C++] signalを捨てて実装する

実装が楽しくなって書くネタがなくなったので、よしなしごとでも。
今までboost::signalを使っていたのですが、

  • なんとなく遅そう
  • 引数に柔軟性が欲しい
  • 優先順位を動的に変えたい
  • connectの逆が欲しい

という理由でsignalを捨てることにしました。
継承しなくて済む世界は楽だったなぁと思いながら、気を取り直してしこしこ実装。
とりあえずboost::signal相当の機能は追加して動くようになりました。
まあ、速度に差なんて全くないわけですけどね。

なんか実装に2,3時間かけてしまったな。boostの中の人には頭が下がります。

とりあえずなんか汎用的なツールなりライブラリを使って必要に応じて特化したものを作るのは結構楽。
その変わりライブラリを使う際には後々のおきかえを考えないと痛い目を見るけど。

そういう意味でboost::signalはboost::signalの構造を実装クラスが全く気にしなくて良いという素敵なライブラリだった。

FWっぽい世界はこうあって欲しいと思うわけです。
まさにJavaで流行っているDIの恩恵ですけど。