std::experimental::optional::value

From cppreference.com
 
 
Technical specifications
Filesystem library (filesystem TS)
Library fundamentals (library fundamentals TS)
Library fundamentals 2 (library fundamentals 2 TS)
Extensions for parallelism (parallelism TS)
Concepts (concepts TS)
Extensions for concurrency (concurrency TS)
Special mathematical functions (special math TR)
 
 
 
constexpr T& value() &;
constexpr const T & value() const &;
(1) (library fundamentals TS)
constexpr T&& value() &&;
constexpr const T&& value() const &&;
(2) (library fundamentals TS)

Returns the contained value.

1) Equivalent to return bool(*this) ? *val : throw bad_optional_access();
2) Equivalent to return bool(*this) ? std::move(*val) : throw bad_optional_access();

Contents

[edit] Parameters

(none)

[edit] Return value

A reference to the contained value.

[edit] Exceptions

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

[edit] Notes

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

[edit] Example

#include <experimental/optional>
#include <iostream>
int main()
{
    std::experimental::optional<int> opt = {};
 
    try {
        int n = opt.value();
    } catch(const std::logic_error& e) {
        std::cout << e.what() << '\n';
    }
}

Possible output:

optional<T>::value: not engaged

[edit] See also

returns the contained value if available, another value otherwise
(public member function)
accesses the contained value
(public member function)
(library fundamentals TS)
exception indicating checked access to an optional that doesn't contain a value
(class)