http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52591
--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-03-15 00:58:15 UTC --- std::vector did not conform to the C++11 allocator-aware container requirements in 4.6, now it does, so you can't use a non-MoveAssignable type as the element type. It would be possible to dispatch to a different function for the cases when propagate_on_container_move_assignment is true or the allocators are known to always compare equal (which I suspect libc++ does) and I'll consider doing that as a conforming extension, but I think the testcase is invalid.