また、programmers.stackexchange.com で:
STL の概念が存在する必要があり、それらを「クラス」または「インターフェイス」と呼ぶのはばかげていることを理解しています。実際には、それらは文書化された (人間の) 概念にすぎず、当時は C++ コードに変換できませんでした。しかし、概念に対応するために言語を拡張する機会が与えられた場合、クラスの機能や導入されたインターフェースを単純に変更しなかったのはなぜでしょうか?
概念はインターフェイス (データのない 100% 抽象クラス)に非常に似ていませんか? それを見ると、インターフェースは公理のサポートを欠いているだけのように思えますが、公理をC++のインターフェースに導入できるかもしれません(概念を引き継ぐためにC++でインターフェースを仮想的に採用することを検討してください)、そうではありませんか?自動の概念でさえ、そのような C++ インターフェースに簡単に追加できると思います (自動インターフェースの LessThanComparable、誰ですか?)。
concept_mapは Adapter パターンに非常に似ていませんか? すべてのメソッドがインラインである場合、アダプタは基本的にコンパイル時以降存在しません。コンパイラは、インターフェイスへの呼び出しをインライン バージョンに置き換えるだけで、実行時にターゲット オブジェクトを直接呼び出します。
静的オブジェクト指向プログラミングと呼ばれるものについて聞いたことがあります。これは本質的に、汎用プログラミングでオブジェクト指向の概念を効果的に再利用することを意味し、実行オーバーヘッドを発生させることなく OOP のほとんどの機能を使用できるようにします。このアイデアがさらに検討されなかったのはなぜですか。
これが十分に明確であることを願っています。私がそうではないと思われる場合は、これを書き直すことができます。私に知らせて。