std::optional<T>::value_or
提供: cppreference.com
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<constchar*> maybe_getenv(constchar* n){if(constchar* x =std::getenv(n))return x;elsereturn{};}int main(){std::cout<< maybe_getenv("MYPWD").value_or("(none)")<<'\n';}
出力例:
(none)
[編集]関連項目
格納されている値を返します (パブリックメンバ関数) |