I am writing many routines where I would strongly prefer: matrix<double> f(const matrix<double>& in) to void f(const matrix<double>& in, matrix<double>& out )

There has been a lot of discussion about this from the C++ groups:

- The move library to support this in C++03
- http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/

I don't understand expression templates well enough to know the current state in ublas, but is it possible to return large matrices in this way? For example, if I took the following code: http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?LU_Matrix_Inversion and had it return a matrix instead, would that give overhead for large matrices?

Could I even nest it with no overhead in other vector expressions: e.g.

matrix<double> C, B; //setup. Assume they are very large

matrix<double> A = inv(B) + C;

If this pattern is not usable yet, any idea of when it would be?

Thanks,

Jesse