home | help
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  <<	"   con-
     structed\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	retroac-
     tively to
	previously published C++ standards.

	  DR	Applied to		Behavior as published		    Cor-
     rect 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)

http://cppreference.com 	   2024.06.10		 std::optional::reset(3)

home | help