Angenommen, ich arbeite an einem wissenschaftlichen Code in C ++. In einer kürzlich mit einem Kollegen geführten Diskussion wurde argumentiert, dass Ausdrucksvorlagen eine wirklich schlechte Sache sein könnten, die möglicherweise die Kompilierbarkeit von Software nur auf bestimmten gcc-Versionen ermöglicht. Angeblich hat dieses Problem einige wissenschaftliche Codes betroffen, wie in den Untertiteln dieser Parodie des Untergangs angedeutet . (Dies sind die einzigen mir bekannten Beispiele, daher der Link.)
Andere Leute haben jedoch argumentiert, dass Ausdrucksvorlagen nützlich sind, weil sie, wie in diesem Artikel im SIAM Journal of Scientific Computing , zu Leistungssteigerungen führen können, indem die Speicherung von Zwischenergebnissen in temporären Variablen vermieden wird.
Ich weiß nicht viel über Template-Metaprogrammierung in C ++, aber ich weiß, dass dies ein Ansatz ist, der bei der automatischen Differenzierung und bei der Intervallarithmetik verwendet wird. So bin ich zu einer Diskussion über Ausdrucksvorlagen gekommen. Wann sollte ich C ++ - Ausdrucksvorlagen in der Informatik verwenden und wann sollte ich sie vermeiden, wenn sowohl die potenziellen Vorteile bei der Leistung als auch die potenziellen Nachteile bei der Wartung berücksichtigt werden (wenn dies überhaupt das richtige Wort ist)?