Now that we've familiarized ourselves with the overloaded assignment operator and the move-assignment, let's once again have a look at their implementations for a class tt(Class), supporting swapping through its tt(swap) member. Here is the generic implementation of the overloaded assignment operator: verb( Class &operator=(Class const &other) { Class tmp(other); swap(tmp); return *this; } ) and this is the move-assignment operator: verb( Class &operator=(Class &&tmp) { swap(tmp); return *this; } ) They look remarkably similar in the sense that the overloaded assignment operator's code is identical to the move-assignment operator's code once a copy of the tt(other) object is available. Since the overloaded assignment operator's tt(tmp) object really is nothing but a temporary tt(Class) object we can use this fact by implementing the overloaded assignment operator in terms of the move-assignment. Here is a second revision of the overloaded assignment operator: verb( Class &operator=(Class const &other) { Class tmp(other); return *this = std::move(tmp); } ) COMMENT(Demo in examples/moveassign.cc)