std::optional<T>::value_or - cppreference.com
提供: cppreference.com
<tbody> </tbody>
|
|
(1) | (C++17以上) |
|
|
(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 の選択されたコンストラクタによって投げられるあらゆる例外。
例
#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'; }
出力例: