メモみたいなもの(^^;
C++でダブルディスパッチのうまい実装を考え中.
1つのパラダイムに限定した設計から始めて,もう4パターン作ってしまったがどうも気に入らない.
適当に名前を付けるとこんな感じか?
・インタフェースベース
・ファンクタベース
・テンプレートベース
・コールバックベース
今回の局面に使えるようなダブルディスパッチを説明するサイトが見つからないのが痛い.
とりあえず,ディスパッチに使える言語要素を3つ見つけた.
この中の2つを使って,2回ディスパッチしてやればいい.
さらに,
・動的なディスパッチは仮想関数と関数オーバーロードの組み合わせ
・静的なディスパッチしかできないがメンバ関数テンプレートは高速
ここまで踏まえられたらおいしいが難しいなあ.