多態のメカニズム分類

http://shinh.skr.jp/h/?DuckTyping
いろいろ考えているうちにごっちゃになってきました。
混乱の中、tepmlateclass u{...};があったとして、tがメンバ関数を用意する方法と、uの中でtのメンバ関数を呼ぶ方法と、uをインスタンス化する方法は、全部別の話ではないかと思えてきました。
まず多態というメカニズムは、その性質上、共通基底「何か」がないと成立しません。Object型でもバリアント型でもvoid *でもいいです。型名を表すコンパイル時変数でもいいです。

  • 共通基底「何か」を渡す側
  • 共通基底「何か」を使う側
  • その結果呼ばれる側

この3つに分けられるのではないかなと。
何をどこで指定してどこが拘束されるのかを見ていけばいいかなあ……。intrusiveは呼ばれる側の問題、dynamicは使う側の問題……。

続きを読む