http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48848
--- Comment #11 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-05-03 09:55:45 UTC --- It would be possible to make it constant complexity, by delaying destruction+deallocation of the old elements of *this until its destructor runs (at which point "an implementation may return all allocated memory") but that would require keeping a collection of previous arrays to be freed on destruction. That collection would not be part of the object's value so wouldn't need to be copied or moved, but I don't think we want to take that approach.