オブジェクト指向な (適切な言葉が見つからない……継承に基づく polymorphism による?) ライブラリだと,ユーザから状態を与えられ,その状態を保持して,ユーザの要求に応じてユーザが与えた状態 (もしくはそれに依存する状態) を返すようなライブラリで,ユーザに状態を返す段階で型の情報が (部分的に) 消えちゃってしまっている,というのが汎用プログラミングと比較しての最大の弱点なわけか?か?か?ここで書いてる「状態」っていうのはオブジェクト (変数) の値とかプログラムが走っている環境のあらゆる「状態」を指しえる言葉ね.
よーするに状態を保持しないか,その状態をユーザに返却する必要がないライブラリ,つまり behavior だけが仕事のライブラリだと汎用プログラミングとオブジェクト指向プログラミングの違いは些細な感じ? C++ だとコンパイル時決定か実行時決定かっつー決定的な違いになるのだけれど,今それを仮に脇においておくとして.そーすると,ホントに構文志向/シグネチャ志向とかそういう違いしか出てこなくなるような?
そーすると,なんで汎用プログラミングだと non-intrusiveness にこだわるんでしょうね?っていう.オブジェクト指向だと intrusive かつ集約的にやるしかないとして,汎用プログラミングだと (intrusive かつ集約的にやる選択肢はあるのに) non-intrusive かつ散逸的な構造が前面に押し出されてくるのか?