Supposons que je travaille sur un code scientifique en C ++. Lors d'une récente discussion avec un collègue, il a été avancé que les modèles d'expression pouvaient être une très mauvaise chose, rendant potentiellement le logiciel compilable uniquement sur certaines versions de gcc. Soi-disant, ce problème a affecté quelques codes scientifiques, comme mentionné dans les sous-titres de cette parodie de Downfall . (Ce sont les seuls exemples que je connaisse, d'où le lien.)
Cependant, d'autres personnes ont fait valoir que les modèles d'expression sont utiles car ils peuvent générer des gains de performances, comme dans cet article du SIAM Journal of Scientific Computing , en évitant le stockage des résultats intermédiaires dans des variables temporaires.
Je ne sais pas grand-chose sur la métaprogrammation de modèles en C ++, mais je sais que c'est une approche utilisée dans la différenciation automatique et dans l'arithmétique d'intervalle, c'est ainsi que je suis entré dans une discussion sur les modèles d'expression. Étant donné à la fois les avantages potentiels des performances et les inconvénients potentiels de la maintenance (si c'est le bon mot), quand dois-je utiliser des modèles d'expression C ++ en science informatique et quand dois-je les éviter?