名前空間
変種
操作

std::optional<T>::value_or

提供: cppreference.com
< cpp‎ | utility‎ | optional
 
 
ユーティリティライブラリ
汎用ユーティリティ
日付と時間
関数オブジェクト
書式化ライブラリ(C++20)
(C++11)
関係演算子 (C++20で非推奨)
整数比較関数
(C++20)
スワップと型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
一般的な語彙の型
(C++11)
(C++17)
(C++17)
(C++17)
(C++17)

初等文字列変換
(C++17)
(C++17)
 
 
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) を使用するためには TCopyConstructible の要件を満たさなければなりません。
-
オーバーロード (2) を使用するためには TMoveConstructible の要件を満たさなければなりません。
-
U&&T に変換可能でなければなりません。

[編集]戻り値

*this に値が格納されている場合はその値、そうでなければ default_value

[編集]例外

戻り値 T の選択されたコンストラクタによって投げられるあらゆる例外。

[編集]

#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)

[編集]関連項目

格納されている値を返します
(パブリックメンバ関数)[edit]
close