Пускай есть некоторый шаблонный класс для представления массива. И есть члены шаблонного класса, например A, B, C, D, .. совпадающие по количеству элементов. В шаблоне реализованы арифметические операции +=, -=, *=, /= для операций с парами (массив, массив) и (массив,скаляр) внутри они представляют из себя обычные циклы (в общем случае распараллеленные), а так же оператор присваивания и конструктор копирования.
Вопрос, как прегрузить обычные бинарные операции так, что бы избежать выделения памяти под промежуточные члены класса и как спрятать всю цепочку вычислений внутрь одного цикла?
Например, A = C+B*(D/2.0f). Если считать влоб, то получается 4 цикла и 3 выделения памяти, в то же время, если как-то реализовать ленивость, то достаточно собрать цепочку вычислений элемента и посчитать всё внутри одного цикла. Как такое правильно сделать?