The program below aborts on assert.
#include <deque>
#include <cassert>
int main ()
{
typedef std::deque<int> Deque;
typedef Deque::iterator Iter;
Deque d1, d2;
Iter iters [2][2] = {
{ d1.begin (), d1.end () },
{ d2.begin (), d2.end () }
};
d1.swap (d2);
assert (d2.begin () == iters [0][0]);
assert (d2.end ()== iters [0][1]);
assert (d1.begin () == iters [1][0]);
assert (d1.end ()== iters [1][1]);
return 0;
}