# std::optional<T>::value

< cpp‎ | utility‎ | optional

constexpr T& value() &; constexpr const T& value() const&; | (1) | (C++17 起)
constexpr T&& value() &&; constexpr const T&& value() const&&; | (2) | (C++17 起)

若 *this 含值，则返回到所含值引用。

否则，抛出 std::bad_optional_access 异常。

### 参数

（无）

### 返回值

到所含值的引用。

### 异常

若 *this 不含值则抛出 std::bad_optional_access 。

### 注解

解引用运算符 operator*() 不检查此 `optional` 是否含值，它可能比 `value()` 更有效率。

### 示例

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

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

可能的输出：

    bad optional access

### 参阅

value_or | 若所含值可用则返回它，否则返回另一个值 (公开成员函数)
operator->operator* | 访问所含值 (公开成员函数)
bad_optional_access (C++17) | 指示进行了到不含值的 `optional` 的有检查访问的异常 (类)