FreeBSD Manual Pages
std::variant::swap(3) C++ Standard Libary std::variant::swap(3) NAME std::variant::swap - std::variant::swap Synopsis void swap( variant& rhs ) noexcept(/* see below */); (since C++17) (un- til C++20) constexpr void swap( variant& rhs ) noexcept(/* see below */); (since C++20) Swaps two variant objects. * if both *this and rhs are valueless by exception, does nothing * otherwise, if both *this and rhs hold the same alternative, calls swap(std::get<i>(*this), std::get<i>(rhs)) where i is index(). If an exception is thrown, the state of the values depends on the exception safety of the swap function called. * otherwise, exchanges values of rhs and *this. If an exception is thrown, the state of *this and rhs depends on exception safety of variant's move constructor. The behavior is undefined unless lvalues of type T_i are Swappable and std::is_move_constructible_v<T_i> is true for all T_i in Types.... Parameters rhs - a variant object to swap with Return value (none) Exceptions If this->index() == rhs.index(), may throw any exception thrown by swap(std::get<i>(*this), std::get<i>(rhs)) with i being index(). Otherwise, may throw any exception thrown by the move constructors of the alternatives currently held by *this and rhs. noexcept specification: noexcept(((std::is_nothrow_move_constructible_v<Types> && std::is_nothrow_swappable_v<Types>) && ...)) Example // Run this code #include <variant> #include <string> #include <iostream> int main() { std::variant<int, std::string> v1{2}, v2{"abc"}; std::visit([] (auto&& x) { std::cout << x << ' '; }, v1); std::visit([] (auto&& x) { std::cout << x << '\n'; }, v2); v1.swap(v2); std::visit([] (auto&& x) { std::cout << x << ' '; }, v1); std::visit([] (auto&& x) { std::cout << x << '\n'; }, v2); } Output: 2 abc abc 2 Defect reports The following behavior-changing defect reports were applied retroac- tively to previously published C++ standards. DR Applied to Behavior as published Correct behavior P2231R1 C++20 swap was not constexpr while the required made constexpr operations can be constexpr in C++20 http://cppreference.com 2022.07.31 std::variant::swap(3)
NAME | Synopsis | Parameters | Return value | Exceptions | Example | Output:
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::variant::swap&sektion=3&manpath=FreeBSD+Ports+15.0>
