std::experimental::optional<T>:: value_or
From cppreference.net
<
cpp
|
experimental
|
optional
|
template
<
class
U
>
constexpr T value_or ( U && default_value ) const & ; |
(库基础技术规范) | |
|
template
<
class
U
>
constexpr T value_or ( U && default_value ) && ; |
(库基础技术规范) | |
若 * this 包含值则返回所含值,否则返回 default_value 。
1)
等价于
bool
(
*
this
)
?
**
this
:
static_cast
<
T
>
(
std::
forward
<
U
>
(
default_value
)
)
。
2)
等价于
bool
(
*
this
)
?
std
::
move
(
**
this
)
:
static_cast
<
T
>
(
std::
forward
<
U
>
(
default_value
)
)
。
目录 |
参数
| default_value | - | 当 * this 为空时使用的值 |
| 类型要求 | ||
-
T
必须满足
CopyConstructible
的要求才能使用重载 (1)。
|
||
-
T
必须满足
MoveConstructible
的要求才能使用重载 (2)。
|
||
-
U&&
必须可转换为
T
。
|
||
返回值
若 * this 有值则返回当前值,否则返回 default_value 。
异常
返回值
T
所选构造函数抛出的任何异常。
示例
运行此代码
#include <cstdlib> #include <experimental/optional> #include <iostream> std::experimental::optional<const char*> maybe_getenv(const char* n) { if (const char* x = std::getenv(n)) return x; else return {}; } int main() { std::cout << maybe_getenv("MYPWD").value_or("(none)") << '\n'; }
可能的输出:
(none)
参见
|
返回所含值
(公开成员函数) |