Ich bin neugierig - wird generische Programmierung (GP) in der Industrie häufig verwendet?
Es hängt wirklich stark vom Kontext des Teams und des Projekts ab.
Beispielsweise ist in Videospielen der Code häufig der "einfachste" (und manchmal sogar zu einfache) Code, jedoch in großen Architekturen. Das liegt daran, dass Spieleentwickler viele Probleme zu beheben haben und sich nicht mit Meta-Programmierung beschäftigen möchten (dies ist eine separate, sehr abstrakte und schwer verständliche Sprache in C ++).
Gleichzeitig ist die grundlegende Verwendung von Vorlagen auch in diesen Shops üblich, und Sie können einige vorlagenbasierte Optimierungen in einigen sehr spezifischen Funktionen einiger Engines sehen.
Aber in Spielentwicklern vermeiden die meisten Leute einfach jede Metaprogrammierung.
Auf der anderen extremen Seite erfordern einige wirklich komplexe oder schwere Verarbeitungsanwendungen, die nicht üblich sind, eine schwere Metaprogrammierung, da die Anforderungen an Leistung und Flexibilität (zur Kompilierungszeit) nicht üblich sind. Ich arbeite gerade in einem.
Es ist nicht üblich, aber es existiert und einige Nischendomänen (in einigen wissenschaftlichen oder in Zahlen verknüpften eingebetteten Kontexten) erfordern Menschen, die viel über Metaprogrammierung wissen oder lernen wollen.
In der Mitte verwenden die meisten Leute nur Meta-Programmierung als "Client", nicht als "Designer". Die meisten Meta-Programmiercodes werden in Bibliotheken gebündelt, da Bibliotheken Tools für Code sind. Was ist besser als eine Bibliothek, die sich an die benutzerdefinierten Typen anpassen kann, mit denen Sie bisher gearbeitet haben?
Boost (http://boost.org) ist eine Reihe von Bibliotheken, von denen einige aus starker metaprogrammierender schwarzer Magie bestehen und in vielen C ++ - Shops als "STL ++" verwendet werden, eine Erweiterung der STL (und das ist es auch). Nicht jeder Shop verwendet es aus verschiedenen Gründen, z. B. aus Gründen der Compilerkompatibilität (einige Boost-Bibliotheken können Ihren Compiler jedes Mal um Verzeihung bitten, wenn er Ihr Gefühl verletzt hat ...) und häufiger, weil einige Entwickler es nicht mögen, nicht verstehen zu können wie ein Tool im Inneren funktioniert (versuchen Sie, Boost.Spirit zu verstehen ...)
Unabhängig von den Unternehmen, für die Sie arbeiten, werden einige dieses Paradigma verwenden, andere weniger oder gar nicht oder sogar verbieten.
Es gibt keinen Konsens, weil niemand die gleichen Bedürfnisse, den gleichen Kontext oder das gleiche Team hat.
Aber offensichtlich wird es immer noch verwendet. Vielleicht fragen Sie, wer Boost auf seiner Mailingliste verwendet, um mehr Beispiele aus der Praxis zu erhalten?