std::list<>::splice invalidates iterators. Rationale?
In C++11 splice
does not invalidate the iterators, but make them refer to the appropriate elements in the *this
container. This is all described in 23.3.5.5.
If the containers have customised, unequal (non compatible) allocators, you cannot swap pointers, you have no choice but to really copy elements around.