Efficiently exchange the value of this object with the value of the specified other object. This method provides the no-throw exception-safety guarantee if the two swapped objects contain the same alternative and if that alternative t_TYPE provides that guarantee. If *this and other do not have the same active alternative and this method exits via an exception, either or both variant objects may be left in a valueless state or with an contained value in a moved-from state. The behavior is undefined unless *this has the same allocator as other. All alternatives shall be move constructible and swappable. For simplicity of implementation, this method differs from the standard in the following ways: * constexpr is not implemented * noexcept specification is not implemented