- Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 - Leap-15.6
 
| std::optional::reset(3) | C++ Standard Libary | std::optional::reset(3) | 
NAME¶
std::optional::reset - std::optional::reset
Synopsis¶
 void reset() noexcept; (since C++17)
  
   (constexpr since C++20)
  
   If *this contains a value, destroy that value as if by value().T::~T().
    Otherwise,
  
   there are no effects.
  
   *this does not contain a value after this call.
Example¶
// Run this code
  
   #include <iostream>
  
   #include <optional>
  
   struct A
  
   {
  
   std::string s;
  
   A(std::string str) : s(std::move(str)) { std::cout << "
    constructed\n"; }
  
   ~A() { std::cout << " destructed\n"; }
  
   A(const A& o) : s(o.s) { std::cout << " copy
    constructed\n"; }
  
   A(A&& o) : s(std::move(o.s)) { std::cout << " move
    constructed\n"; }
  
   A& operator=(const A& other)
  
   {
  
   s = other.s;
  
   std::cout << " copy assigned\n";
  
   return *this;
  
   }
  
   A& operator=(A&& other)
  
   {
  
   s = std::move(other.s);
  
   std::cout << " move assigned\n";
  
   return *this;
  
   }
  
   };
  
   int main()
  
   {
  
   std::cout << "Create empty optional:\n";
  
   std::optional<A> opt;
  
   std::cout << "Construct and assign value:\n";
  
   opt = A("Lorem ipsum dolor sit amet, consectetur adipiscing elit
    nec.");
  
   std::cout << "Reset optional:\n";
  
   opt.reset();
  
   std::cout << "End example\n";
  
   }
Output:¶
 Create empty optional:
  
   Construct and assign value:
  
   constructed
  
   move constructed
  
   destructed
  
   Reset optional:
  
   destructed
  
   End example
  
   Defect reports
  
   The following behavior-changing defect reports were applied retroactively to
  
   previously published C++ standards.
  
   DR Applied to Behavior as published Correct behavior
  
   P2231R1 C++20 reset was not constexpr while non-trivial made constexpr
  
   destruction is allowed in constexpr in C++20
See also¶
 operator= assigns contents
  
   (public member function)
| 2024.06.10 | http://cppreference.com |