Запретить привязку шаблонов выражений к ссылкам rvalue

Я понимаю, что выполнение чего-то вроде следующего:

auto&& x = Matrix1() + Matrix2() + Matrix3();
std::cout << x(2,3) << std::endl;

Вызовет тихую ошибку времени выполнения, если матричные операции используют шаблоны выражений (например, boost :: ublas ).

Есть ли способ разработать шаблоны выражений, чтобы предотвратить компилятор от компиляции такого кода, который может привести к использованию просроченных временных файлов во время выполнения?

(Я безуспешно пытался обойти эту проблему, попытка здесь )

9
задан Lightness Races with Monica 6 March 2012 в 10:44
поделиться