Assignable
Assignable types must have copy constructors, operator= for assignment, and the swap() function defined.
operator=
swap()
CopyConstructible
x
y
Assignment
x = y
X &
Require operator=
Swap
swap(x, y)
void
Require swap() function