Припустимо, я працюю над науковим кодом на C ++. У недавній дискусії з колегою було стверджено, що шаблони виразів можуть бути дійсно поганою справою, що потенційно робить програмне забезпечення компільованим лише для певних версій gcc. Нібито ця проблема торкнулася декількох наукових кодексів, про які йдеться у підзаголовках цієї пародії на Downfall . (Це єдині мені відомі приклади, звідси посилання.)
Однак інші люди стверджують, що шаблони виразів корисні, оскільки можуть принести підвищення продуктивності, як у цій статті в журналі SIAM Journal of Scientific Computing , уникаючи зберігання проміжних результатів у тимчасових змінних.
Я не знаю багато про метапрограмування шаблонів в C ++, але я знаю, що це один підхід, який використовується в автоматичній диференціації та в інтервальній арифметиці, саме тому я потрапив в дискусію про шаблони виразів. Враховуючи як потенційні переваги в продуктивності, так і потенційні недоліки в обслуговуванні (якщо це навіть правильне слово), коли я повинен використовувати шаблони виразів C ++ в обчислювальній науці, і коли я повинен їх уникати?