Supongamos que estoy trabajando en un código científico en C ++. En una discusión reciente con un colega, se argumentó que las plantillas de expresión podrían ser algo realmente malo, lo que podría hacer que el software sea compilable solo en ciertas versiones de gcc. Supuestamente, este problema ha afectado algunos códigos científicos, como se alude en los subtítulos de esta parodia de Downfall . (Estos son los únicos ejemplos que conozco, de ahí el enlace).
Sin embargo, otras personas han argumentado que las plantillas de expresión son útiles porque pueden generar ganancias de rendimiento, como en este artículo en SIAM Journal of Scientific Computing , al evitar el almacenamiento de resultados intermedios en variables temporales.
No sé mucho acerca de la metaprogramación de plantillas en C ++, pero sí sé que es un enfoque utilizado en la diferenciación automática y en la aritmética de intervalos, que es cómo me metí en una discusión sobre plantillas de expresión. Dadas las ventajas potenciales en el rendimiento y las desventajas potenciales en el mantenimiento (si esa es la palabra correcta), ¿cuándo debo usar plantillas de expresión C ++ en ciencia computacional y cuándo debo evitarlas?