|
|
friendconstexprvoid swap( expected& lhs, expected& rhs)noexcept(/*see below*/); | (since C++23) | |
Overloads thestd::swap algorithm forstd::expected. Exchanges the state oflhs with that ofrhs. Effectively callslhs.swap(rhs).
This overload participates in overload resolution only iflhs.swap(rhs) is valid.
This function is not visible to ordinaryunqualified orqualified lookup, and can only be found byargument-dependent lookup whenstd::expected<T, E> is an associated class of the arguments.
Contents |
lhs, rhs | - | expected objects whose states to swap |
(none)
#include <expected>#include <iostream>#include <string_view> using Ex=std::expected<std::string,int>; void show(const Ex& ex1,const Ex& ex2,std::string_view term="\n"){for(int i{}; i!=2;++i){std::cout<<(i?"ex2":"ex1");if(const Ex& ex=(i? ex2: ex1); ex.has_value())std::cout<<".value() = "<<*ex<<" ";elsestd::cout<<".error() = "<< ex.error()<<" ";}std::cout<< term;} int main(){ Ex ex1("\N{SMILING FACE WITH SUNGLASSES}"); Ex ex2{"\N{SLIGHTLY SMILING FACE}"}; show(ex1, ex2,"after swap(ex1, ex2):\n");std::swap(ex1, ex2); show(ex1, ex2,"\n\n"); ex2=std::unexpected(13); show(ex1, ex2,"after swap(ex1, ex2):\n");std::swap(ex1, ex2); show(ex1, ex2,"\n\n"); ex2=std::unexpected(37); show(ex1, ex2,"after swap(ex1, ex2):\n");std::swap(ex1, ex2); show(ex1, ex2);}
Output:
ex1.value() = 😎 ex2.value() = 🙂 after swap(ex1, ex2):ex1.value() = 🙂 ex2.value() = 😎 ex1.value() = 🙂 ex2.error() = 13 after swap(ex1, ex2):ex1.error() = 13 ex2.value() = 🙂 ex1.error() = 13 ex2.error() = 37 after swap(ex1, ex2):ex1.error() = 37 ex2.error() = 13
exchanges the contents (public member function)[edit] |