Я понимаю, что выполнение чего-то вроде следующего:
auto&& x = Matrix1() + Matrix2() + Matrix3();
std::cout << x(2,3) << std::endl;
Вызовет тихую ошибку времени выполнения, если матричные операции используют шаблоны выражений (например, boost :: ublas
).
Есть ли способ разработать шаблоны выражений, чтобы предотвратить компилятор от компиляции такого кода, который может привести к использованию просроченных временных файлов во время выполнения?
(Я безуспешно пытался обойти эту проблему, попытка здесь )