std::optional<T>::value_or
提供: cppreference.com
<tbody>
</tbody>
template< class U > constexpr T value_or( U&& default_value ) const&; |
(1) | (C++17以上) |
template< class U > constexpr T value_or( U&& default_value ) &&; |
(2) | (C++17以上) |
*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 が空の場合に使用する値
|
| 型の要件 | ||
-オーバーロード (1) を使用するためには T は CopyConstructible の要件を満たさなければなりません。
| ||
-オーバーロード (2) を使用するためには T は MoveConstructible の要件を満たさなければなりません。
| ||
-U&& は T に変換可能でなければなりません。
|
戻り値
*this に値が格納されている場合はその値、そうでなければ default_value。
例外
戻り値 T の選択されたコンストラクタによって投げられるあらゆる例外。
例
Run this code
#include <optional>
#include <iostream>
#include <cstdlib>
std::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)
関連項目
| 格納されている値を返します (パブリックメンバ関数) |