Namespaces
Variants

std::experimental::optional<T>:: value

From cppreference.net
constexpr T & value ( ) & ;
constexpr const T & value ( ) const & ;
(1) (库基础技术规范)
constexpr T && value ( ) && ;
constexpr const T && value ( ) const && ;
(2) (库基础技术规范)

返回所包含的值。

1) 等价于 return bool ( * this ) ? * val : throw bad_optional_access ( ) ;
2) 等价于 return bool ( * this ) ? std :: move ( * val ) : throw bad_optional_access ( ) ;

目录

参数

(无)

返回值

对所含值的引用。

异常

* this 不包含值,则抛出 std::experimental::bad_optional_access

注释

解引用运算符 operator*() 不会检查此可选对象是否包含值,这可能比 value() 更高效。

示例

#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';
    }
}

可能的输出:

optional<T>::value: not engaged

参见

若包含值则返回该值,否则返回另一值
(公开成员函数)
访问所含值
(公开成员函数)
(library fundamentals TS)
指示对不包含值的 optional 进行受检访问时引发的异常
(类)