Since their invention in 1995, Expression Templates (ETs) have proven to be a valuable tool for many C++ template libraries. Especially numerics libraries quickly embraced them as salvation for the performance deficiencies of standard C++. This reputation as performance optimization quickly added to the success of ETs and lead to a general adoption of the technique.
However, some of the "well-known" facts about expression templates prove to be urban legends that are unfortunately dangerously misleading. In certain communities they even contribute to severely discredit C++ in general. In this talk I will put several statements about ETs in the spotlight and re-evaluate them in the context of the most widely used, ET-based math libraries: the ET pioneer Blitz++, the Boost uBLAS library, MTL4, Eigen3, and Blaze. Specifically, I will put the following statements to the test:
• ETs are easy to use and apply
• ETs are easy to maintain
• ETs are a performance optimization
• ETs help the compiler to produce optimized code
• ETs are easily parallelized
• ETs are obsolete due to C++11 move semantics
Klaus Iglberger has finished his PhD in computer science in 2010. Back then, he contributed to several massively parallel simulation frameworks and was active researcher in the high performance computing community. From 2011 to 2012, he was the managing director of the central institute for scientific computing in Erlangen. Currently he is on the payroll at Elektrobit in Erlangen, Germany, as a senior software engineer and architect of one of the world''s leading navigation systems. Additionally, he is the initiator and lead designer of the Blaze C++ math library (http://code.google.com/p/blaze-lib/).