Namespaces
Variants

std::optional<T>::value

从 zh.cppreference.net
 
 
 
 
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 <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';
}

输出:

bad optional access
bad optional access
43
44

参见

若存在被容纳值则返回之,否则返回另一个值
(公开成员函数)
访问被容纳的值
(公开成员函数)
指示对被容纳值进行有检查访问而 optional 不包含值时抛出的异常
(类)