Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::make_optional

      From cppreference.com
      <cpp‎ |utility‎ |optional
       
       
      Utilities library
       
       
      Defined in header<optional>
      template<class T>
      constexprstd::optional<std::decay_t<T>> make_optional( T&& value);
      (1)(since C++17)
      template<class T,class...Args>
      constexprstd::optional<T> make_optional( Args&&...args);
      (2)(since C++17)
      template<class T,class U,class...Args>

      constexprstd::optional<T> make_optional(std::initializer_list<U> il,

                                                Args&&...args);
      (3)(since C++17)
      1) Creates an optional object fromvalue. Effectively callsstd::optional<std::decay_t<T>>(std::forward<T>(value)).
      2) Creates an optional object constructed in-place fromargs.... Equivalent toreturnstd::optional<T>(std::in_place,std::forward<Args>(args)...);.
      This overload participates in overload resolution only ifstd::is_constructible_v<T, Args...> istrue.
      3) Creates an optional object constructed in-place fromil andargs.... Equivalent toreturnstd::optional<T>(std::in_place, il,std::forward<Args>(args)...);.
      This overload participates in overload resolution only ifstd::is_constructible_v<T,std::initializer_list<U>&, Args...> istrue.

      Contents

      [edit]Parameters

      value - the value to construct optional object with
      il, args - arguments to be passed to the constructor ofT

      [edit]Return value

      The constructed optional object.

      [edit]Exceptions

      Throws any exception thrown by the constructor ofT.

      [edit]Notes

      T need not be movable for overloads(2,3) due to guaranteed copy elision.

      [edit]Example

      Run this code
      #include <iomanip>#include <iostream>#include <optional>#include <string>#include <vector> int main(){auto op1= std::make_optional<std::vector<char>>({'a','b','c'});std::cout<<"op1: ";for(char c: op1.value())std::cout<< c<<',';auto op2= std::make_optional<std::vector<int>>(5,2);std::cout<<"\nop2: ";for(int i:*op2)std::cout<< i<<',';std::string str{"hello world"};auto op3= std::make_optional<std::string>(std::move(str));std::cout<<"\nop3: "<<std::quoted(op3.value_or("empty value"))<<'\n';std::cout<<"str: "<<std::quoted(str)<<'\n';}

      Possible output:

      op1: a,b,c,op2: 2,2,2,2,2,op3: "hello world"str: ""

      [edit]See also

      constructs theoptional object
      (public member function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/optional/make_optional&oldid=176015"

      [8]ページ先頭

      ©2009-2025 Movatter.jp