Implement n3668 - std::exchange