Prevenir plantillas de expresión vinculadas a referencias de valor

Entiendo que hacer algo como lo siguiente:

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

Causará un error de tiempo de ejecución silencioso si las operaciones de matriz usan plantillas de expresión (comoboost::ublas).

¿Hay alguna forma de diseñar plantillas de expresión para evitar que el compilador compile dicho código que pueda resultar en el uso de temporarios caducados en tiempo de ejecución?

(He intentado sin éxito solucionar este problema, el intento esaqu)

Respuestas a la pregunta(4)

Su respuesta a la pregunta