std::expected<T,E>::value_or
来自 zh.cppreference.net
| 主模板 |
||
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
does not have a default template argument
|
specified |
参见
|
返回期望值
(公开成员函数) |
|
|
若存在意外值则返回该值,否则返回其他值
(公开成员函数) |