Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      swap(std::expected)

      From cppreference.com
      <cpp‎ |utility‎ |expected
       
       
      Utilities library
       
       
      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

      [edit]Parameters

      lhs, rhs -expected objects whose states to swap

      [edit]Return value

      (none)

      [edit]Exceptions

      noexcept specification:  
      noexcept(noexcept(lhs.swap(rhs)))

      [edit]Example

      Run this code
      #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

      [edit]See also

      exchanges the contents
      (public member function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/expected/swap2&oldid=183080"

      [8]ページ先頭

      ©2009-2025 Movatter.jp