Wouldn't changing vectors' operator = allow that?
From:
BOOST_UBLAS_INLINE
vector &operator = (const vector &v) {
data () = v.data ();
return *this;
}
to
// pass by value for move semantics
BOOST_UBLAS_INLINE
vector &operator = (vector v) {
data().swap(v.data());
return *this;
}