Namespaces
Variants

std::optional<T>:: value

From cppreference.net
Utilities library
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 不包含值时抛出的异常
(类)