名稱空間
變體
操作

std::expected<T,E>::value_or

來自 cppreference.com
< cpp‎ | 工具庫‎ | expected
 
 
 
 
主模板
template< class U = std::remove_cv_t<T> >
constexpr T value_or( U&& default_value ) const&;
(1) (C++23 起)
template< class U = std::remove_cv_t<T> >
constexpr T value_or( U&& default_value ) &&;
(2) (C++23 起)

如果期望值存在則返回該值,否則返回 default_value

void 的部分特化不包含這些成員函式。

1) 如果 std::is_copy_constructible_v<T>std::is_convertible_v<U, T>false,程式格式錯誤。
2) 如果 std::is_move_constructible_v<T>std::is_convertible_v<U, T>false,程式格式錯誤。

目錄

[編輯] 引數

default_value - *this 不包含期望值時使用的值

[編輯] 返回值

1) has_value() ? **this : static_cast<T>(std::forward<U>(default_value))
2) has_value() ? std::move(**this) : static_cast<T>(std::forward<U>(default_value))

[編輯] 示例

[編輯] 缺陷報告

下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 3886 C++23 U 沒有預設模板實參 已指定

[編輯] 另請參閱

返回預期值
(公共成員函式) [編輯]