home | help
std::optional::value(3)        C++ Standard Libary	 std::optional::value(3)

NAME
     std::optional::value - std::optional::value

Synopsis
	constexpr T& value() &; 	      (1) (since C++17)
	constexpr const T& value() const &;
	constexpr T&& value() &&;	      (2) (since C++17)
	constexpr const T&& value() const &&;

	If *this contains a value, returns a reference to the contained value.

	Otherwise, throws a std::bad_optional_access exception.

Parameters
	(none)

Return value
	A reference to the contained value.

Exceptions
	std::bad_optional_access if *this does not contain a value.

Notes
	The  dereference  operator  operator*()  does not check if this optional
     contains a
	value, which may be more efficient than value().

Example
     // Run this code

      #include <iostream>
      #include <optional>

      int main()
      {
	  std::optional<int> opt = {};

	  try
	  {
	      [[maybe_unused]] int n = opt.value();
	  }
	  catch(const std::bad_optional_access& e)
	  {
	      std::cout << e.what() << '\n';
	  }

	  try
	  {
	      opt.value() = 42;
	  }
	  catch(const std::bad_optional_access& e)
	  {
	      std::cout << e.what() << '\n';
	  }

	  opt = 43;
	  std::cout << *opt << '\n';

	  opt.value() = 44;
	  std::cout << opt.value() << '\n';
      }

Output:
      bad optional access
      bad optional access
      43
      44

See also
			    returns the contained value  if  available,  another
     value
	value_or	    otherwise
			    (public member function)
	operator->	    accesses the contained value
	operator*	    (public member function)
	bad_optional_access  exception	indicating checked access to an optional
     that doesn't
	(C++17) 	    contain a value
			    (class)

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

home | help