http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48848
--- Comment #9 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-05-03 09:03:22 UTC --- Good point. I think the requirement for constant complexity should have been removed by LWG 675. Pending clarification from the committee I think I would implement it with the usual swap with temporary, giving linear complexity. valarray(std::move(v)).swap(*this);