##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::experimental::optional::value

From cppreference.com
< cpp‎ | experimental‎ | optional

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

### [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

Run this code

    #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

value_or | returns the contained value if available, another value otherwise (public member function) [edit]
operator->operator* | accesses the contained value (public member function) [edit]
bad_optional_access (library fundamentals TS) | exception indicating checked access to an optional that doesn't contain a value (class) [edit]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/experimental/optional/value&oldid=80198"