Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

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)
					    (until C++20)
	  constexpr void reset() noexcept;  (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 <optional>
	#include <iostream>

	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
       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)

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

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::optional::reset&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help