move_on_copy assignment operator