私は興味があります-ジェネリックプログラミング(GP)は業界で多く使用されていますか?
チームとプロジェクトのコンテキストに本当に大きく依存しています。
たとえば、ビデオゲームでは、多くの場合、コードは「最も単純な」(場合によっては単純すぎる)こともありますが、大規模なアーキテクチャです。これは、ゲーム開発者が修正すべき多くの問題を抱えており、メタプログラミング(C ++内で非常に抽象的で把握しにくい言語)に煩わされたくないためです。
同時に、これらのショップでもテンプレートの基本的な使用法は一般的であり、一部のエンジンの特定の機能でテンプレートベースの最適化を確認できます。
しかし、ゲーム開発では、ほとんどの人はメタプログラミングを避けます。
さて、もう一方の極端な側面では、一般的ではない本当に複雑または重い処理アプリケーションには、一般的ではないパフォーマンスと柔軟性(コンパイル時)の要件のために、ある種の重いメタプログラミングが必要です。私は今、1つで働いています。
それは一般的ではありませんが、存在し、一部のニッチドメイン(一部の科学的または数値計算の埋め込みコンテキスト)では、メタプログラミングについて多くの知識があるか、学習を希望しています。
途中で、ほとんどの人はメタプログラミングを「デザイナー」としてではなく「クライアント」として使用します。ライブラリはコード用のツールであり、これまで使用してきたカスタムタイプに適応できるライブラリよりも優れているため、ほとんどのメタプログラミングコードはライブラリにバンドルされています。
Boost(http://boost.org)は一連のライブラリで、一部は重いメタプログラミングブラックマジックで作られており、多くのC ++ショップでSTLの拡張機能である「STL ++」として使用されています(現在もそうです)。一部の開発者は理解できないことを好まないため、すべてのショップがコンパイラー互換性などのいくつかの理由で使用しているわけではありません。内部でのツールの動作(Boost.Spiritを理解してみてください...)
どんな会社に勤めようと、このパラダイムを使用する企業もあれば、まったく使用しない企業もあれば、禁止する企業もあります。
誰も同じニーズ、コンテキスト、またはチームを持っていないため、コンセンサスはありません。
それでも、明らかに、それは使用されます。メーリングリストでブーストを使用している人に、より現実的な例を持っている人に尋ねるかもしれません。