Je suis curieux - la programmation générique (GP) est-elle beaucoup utilisée dans l'industrie?
Cela dépend vraiment largement du contexte de l'équipe et du projet.
Par exemple, dans les jeux vidéo, le code est souvent le "plus simple" possible (et même parfois trop simple) mais dans les grandes architectures. C'est parce que les développeurs de jeux ont beaucoup de problèmes à résoudre et ne veulent pas s'embêter avec la méta-programmation (c'est un langage séparé très abstrait et difficile à saisir en C ++).
Dans le même temps, l'utilisation de base des modèles est courante même dans ces boutiques et vous pouvez voir des optimisations basées sur des modèles dans certaines fonctions très spécifiques de certains moteurs.
Mais dans le développement de jeux, la plupart des gens éviteront tout métaprogrammation.
Maintenant, d'un autre côté extrême, certaines applications de traitement vraiment complexes ou lourdes, qui ne sont pas courantes, nécessitent une sorte de métaprogrammation lourde en raison d'exigences de performances et de flexibilité (au moment de la compilation) qui ne sont pas courantes. Je travaille dans un en ce moment.
Ce n'est pas courant, mais il existe et certains domaines de niche (dans certains contextes scientifiques ou embarqués) exigent que les gens en connaissent beaucoup sur la métaprogrammation ou souhaitent apprendre.
Au milieu, la plupart des gens utiliseront simplement la méta-proggramme comme "client", pas comme "concepteur". La plupart du code de méta-programmation sont regroupés dans des bibliothèques car les bibliothèques sont des outils pour le code et quoi de mieux qu'une bibliothèque qui peut s'adapter aux types personnalisés avec lesquels vous avez travaillé jusqu'à présent?
Boost (http://boost.org) est un ensemble de bibliothèques, certaines étant faites de métaprogrammation de magie noire lourde, et sont utilisées dans de nombreux magasins C ++ sous le nom de "STL ++", une extension de la STL (et elle l'est). Toutes les boutiques ne l'utilisent pas pour plusieurs raisons, comme la compatibilité du compilateur (certaines bibliothèques de boost peuvent faire pardonner à votre compilateur chaque fois qu'il vous fait du mal ...) et plus souvent parce que certains développeurs n'aiment pas ne pas pouvoir comprendre comment fonctionne un outil à l'intérieur (essayez de comprendre Boost.Spirit ...)
Quelles que soient les entreprises pour lesquelles vous travaillerez, certaines utiliseront ce paradigme, d'autres moins ou pas du tout ou même les interdiront.
Il n'y a pas de consensus car personne n'a les mêmes besoins, le même contexte ou la même équipe.
Mais encore, évidemment, il est utilisé. Peut-être demandez-vous qui utilise boost sur leur liste de diffusion pour avoir plus d'exemples concrets?