Namespaces
Variants

std::expected<T,E>:: expected

From cppreference.net
Utilities library
メインテンプレート
constexpr expected ( ) ;
(1) (C++23以降)
constexpr expected ( const expected & other ) ;
(2) (C++23以降)
constexpr expected ( expected && other ) noexcept ( /* see below */ ) ;
(3) (C++23以降)
template < class U, class G >
constexpr expected ( const expected < U, G > & other ) ;
(4) (C++23以降)
(条件付き明示的)
template < class U, class G >
constexpr expected ( expected < U, G > && other ) ;
(5) (C++23以降)
(条件付き明示的)
template < class U = std:: remove_cv_t < T > >
constexpr explicit ( ! std:: is_convertible_v < U, T > ) expected ( U && v ) ;
(6) (C++23以降)
template < class G >

constexpr explicit ( ! std:: is_convertible_v < const G & , E > )

expected ( const std:: unexpected < G > & e ) ;
(7) (C++23以降)
template < class G >

constexpr explicit ( ! std:: is_convertible_v < G, E > )

expected ( std:: unexpected < G > && e ) ;
(8) (C++23以降)
template < class ... Args >
constexpr explicit expected ( std:: in_place_t , Args && ... args ) ;
(9) (C++23以降)
template < class U, class ... Args >

constexpr explicit
expected ( std:: in_place_t ,

std:: initializer_list < U > il, Args && ... args ) ;
(10) (C++23以降)
template < class ... Args >
constexpr explicit expected ( std:: unexpect_t , Args && ... args ) ;
(11) (C++23以降)
template < class U, class ... Args >

constexpr explicit
expected ( std:: unexpect_t ,

std:: initializer_list < U > il, Args && ... args ) ;
(12) (C++23以降)
void 部分特殊化
constexpr expected ( ) ;
(13) (C++23以降)
constexpr expected ( const expected & other ) ;
(14) (C++23以降)
constexpr expected ( expected && other )
noexcept ( std:: is_nothrow_move_constructible_v < E > ) ;
(15) (C++23以降)
template < class U, class G >

constexpr explicit ( ! std:: is_convertible_v < const G & , E > )

expected ( const expected < U, G > & other ) ;
(16) (C++23以降)
template < class U, class G >

constexpr explicit ( ! std:: is_convertible_v < G, E > )

expected ( expected < U, G > && other ) ;
(17) (C++23以降)
template < class G >

constexpr explicit ( ! std:: is_convertible_v < const G & , E > )

expected ( const std:: unexpected < G > & e ) ;
(18) (C++23以降)
template < class G >

constexpr explicit ( ! std:: is_convertible_v < G, E > )

expected ( std:: unexpected < G > && e ) ;
(19) (C++23以降)
constexpr explicit expected ( std:: in_place_t ) ;
(20) (C++23以降)
template < class ... Args >
constexpr explicit expected ( std:: unexpect_t , Args && ... args ) ;
(21) (C++23以降)
template < class U, class ... Args >

constexpr explicit
expected ( std:: unexpect_t ,

std:: initializer_list < U > il, Args && ... args ) ;
(22) (C++23以降)

新しい expected オブジェクトを構築します。

目次

翻訳の説明: - 「Contents」→「目次」に翻訳 - HTMLタグ、属性、 内のC++キーワード(void)は翻訳せず保持 - 技術用語(Parameters, Effects, Constructors, Exceptions, Example, Defect reports, See also)は原文のまま保持 - 数値や構造は完全に保持 - フォーマットとインデントは元のまま維持

パラメータ

other - 別の expected オブジェクト。その含まれる値がコピーされる
e - std::unexpected オブジェクト。その含まれる値がコピーされる
v - 含まれる値を初期化するための値
args - 含まれる値を初期化するための引数
il - 含まれる値を初期化するための初期化子リスト

効果

プライマリテンプレートコンストラクタ

**翻訳結果:** **注記:** - HTMLタグ、属性、 タグ内のC++コードは一切翻訳していません - 数値「3」はバージョン番号としてそのまま保持 - C++のキーワード(std、move、errorなど)は翻訳対象外 - 元のフォーマットと構造を完全に保持 **翻訳結果の説明:** - HTMLタグ、属性、C++コード(` `、`
`、``タグ内のテキスト)は翻訳せず、元のまま保持しています
- C++固有の用語(`std::forward`、`U`、`v`、`true`)は翻訳していません
- 数字や記号もそのまま保持しています
- フォーマットと構造は完全に維持されています
**翻訳結果の説明:** - HTMLタグ、属性、CSSクラスはすべて元のまま保持されています - ` `、`
`、``タグ内のテキスト(この場合はC++コード)は翻訳されていません
- C++固有の用語(`std::forward`、`const`、`false`、`error`など)は翻訳されていません
- 数値、記号、コード構文はすべて元のまま保持されています
- 日本語への翻訳はHTML構造とプログラミング要素を損なわないように行われています
HTMLタグ、属性、および` `タグ内のC++コードは翻訳せず、元のフォーマットを保持しました。数値「8」はリンクテキストとしてそのまま残しています。 **注記**: このHTMLコード内のテキストは以下の通りです: - バージョン番号「9」はリンクテキストとして残されています - C++コード部分(`std::forward (args)...` と `true`)は翻訳対象外として保持されています - ハイフン「-」はそのまま保持されています - HTMLタグ、属性、クラス名はすべて変更されていません **翻訳結果:** **注記:** - HTMLタグ、属性はすべて保持されています - ` `タグ内のC++コードは翻訳対象外です - `std::forward`、`Args`、`args`などのC++専門用語は翻訳していません - 数値の`10`はそのまま保持しています **翻訳結果の説明:** - HTMLタグ、属性、構造は完全に保持されています - ` `、`
`、``タグ内のテキスト(この場合はC++コード)は翻訳されていません
- C++固有の用語(`std::forward`、`Args`、`args`、`false`)は翻訳されていません
- 数字「11」と記号「-」はそのまま保持されています
- 元の書式設定とインデントが正確に維持されています
**翻訳結果:** **注記:** - HTMLタグ、属性、および` `内のC++コード(`il`、`std::forward`、`Args`、`args`など)は翻訳対象外として保持されています - 数値「12」はそのまま保持されています - 括弧や記号類も元のフォーマット通りに保持されています
オーバーロード 初期化
方法
初期化子の対象... has_value()
構築後の状態
期待値 予期せぬ値
( 1 ) (空) - true
( 2 ) 直接初期化
(非リスト)
* other other. error ( ) other. has_value ( )
  • true の場合、期待値のみを初期化します。
  • false の場合、非期待値のみを初期化します。
( 3 ) std :: move ( * other ) std :: move ( other. error ( ) )
( 3 ) std :: move ( * other ) std :: move ( other. error ( ) )
( 4 ) std:: forward < const U & >
( * other )
std:: forward < const G & >
( other. error ( ) )
( 5 ) std:: forward < U > ( * other ) std:: forward < G >
( other. error ( ) )
( 6 ) std:: forward < U > ( v ) - true
( 7 ) - std:: forward < const G & >
( e. error ( ) )
false
( 8 ) std:: forward < G > ( e. error ( ) )
( 9 ) std:: forward < Args > ( args ) ... - true
( 10 ) il,
std:: forward < Args > ( args ) ...
( 10 ) il,
std:: forward < Args > ( args ) ...
( 11 ) - std:: forward < Args > ( args ) ... false
( 12 ) il,
std:: forward < Args > ( args ) ...
( 12 ) il,
std:: forward < Args > ( args ) ...

void 部分特殊化コンストラクタ

オーバーロード 初期化方法 予期しない値の初期化子 has_value() 構築後の値
( 13 ) N/A - true
( 14 ) 直接(非リスト) rhs. error ( ) other. has_value ( )
  • false の場合、予期しない値を初期化します
( 15 ) std :: move ( rhs. error )
( 16 ) std:: forward < const G & > ( rhs. error ( ) )
( 17 ) std:: forward < G > ( rhs. error ( ) )
( 18 ) std:: forward < const G & > ( e. error ( ) ) false
( 19 ) std:: forward < G > ( e. error ( ) )
( 20 ) N/A - true
( 21 ) 直接(非リスト) std:: forward < Args > ( args ) ... false
( 22 ) il, std:: forward < Args > ( args ) ...

制約条件と補足情報

プライマリテンプレートコンストラクタ

1) このオーバーロードは、 std:: is_default_constructible_v < T > true の場合にのみ、オーバーロード解決に参加します。
2) このコンストラクタは、 std:: is_copy_constructible_v < T > および std:: is_copy_constructible_v < E > が両方とも true でない限り、削除されたものとして定義されます。
このコンストラクタは、 std:: is_trivially_copy_constructible_v < T > std:: is_trivially_copy_constructible_v < E > が両方とも true の場合、トリビアルです。
3) このオーバーロードは、 std:: is_move_constructible_v < T > および std:: is_move_constructible_v < E > が両方とも true である場合にのみ、オーバーロード解決に参加します。
このコンストラクタは、 std:: is_trivially_move_constructible_v < T > std:: is_trivially_move_constructible_v < E > が両方とも true の場合、トリビアルです。
4,5) These overloads participate in overload resolution only if all following conditions are satisfied:
4) このコンストラクタは、 explicit となる条件は、 std:: is_convertible_v < const U & , T > または std:: is_convertible_v < const G & , E > false の場合です。
5) このコンストラクタは、 explicit となる条件は、 std:: is_convertible_v < U, T > または std:: is_convertible_v < G, E > false の場合です。
6) このオーバーロードは、以下の全ての条件が満たされる場合にのみオーバーロード解決に参加します:
7) このオーバーロードは、 std:: is_constructible_v < E, const G & > true の場合にのみ、オーバーロード解決に参加します。
8) このオーバーロードは、 std:: is_constructible_v < E, G > true である場合にのみ、オーバーロード解決に参加します。
9) このオーバーロードは、 std:: is_constructible_v < T, Args... > true の場合にのみ、オーバーロード解決に参加します。
10) このオーバーロードは、 std:: is_constructible_v < T, std:: initializer_list < U > & , Args... > true である場合にのみ、オーバーロード解決に参加します。
11) このオーバーロードは、 std:: is_constructible_v < E, Args... > true である場合にのみ、オーバーロード解決に参加します。
12) このオーバーロードは、 std:: is_constructible_v < E, std:: initializer_list < U > & , Args... > true の場合にのみ、オーバーロード解決に参加します。

void 部分特殊化コンストラクタ

14) このコンストラクタは、 std:: is_copy_constructible_v < E > true でない限り、削除済みとして定義されます。
このコンストラクタは、 std:: is_trivially_copy_constructible_v < E > true の場合、trivialです。
15) このオーバーロードは、 std:: is_move_constructible_v < E > true の場合にのみ、オーバーロード解決に参加します。
このコンストラクタは、 std:: is_trivially_move_constructible_v < E > true の場合、trivialです。
16,17) これらのオーバーロードは、以下の全ての条件が満たされる場合にのみオーバーロード解決に参加します:
18) このオーバーロードは、 std:: is_constructible_v < E, const G & > true の場合にのみ、オーバーロード解決に参加します。
19) このオーバーロードは、 std:: is_constructible_v < E, G > true の場合にのみ、オーバーロード解決に参加します。
21) このオーバーロードは、 std:: is_constructible_v < E, Args... > true である場合にのみ、オーバーロード解決に参加します。
22) このオーバーロードは、 std:: is_constructible_v < E, std:: initializer_list < U > & , Args... > true である場合にのみ、オーバーロード解決に参加します。

例外

プライマリテンプレートコンストラクタ

1) 期待値の初期化によってスローされるあらゆる例外をスローします。
2) 期待される値または予期せぬ値の初期化によってスローされるあらゆる例外をスローします。
3) expected値またはunexpected値の初期化によってスローされるあらゆる例外をスローします。
4,5) expected値またはunexpected値の初期化によってスローされるあらゆる例外をスローします。
6) 期待値の初期化によってスローされたあらゆる例外をスローします。
7,8) 予期しない値の初期化によってスローされるあらゆる例外をスローします。
9,10) 期待値の初期化によってスローされた例外をスローします。
11,12) 予期しない値の初期化によってスローされるあらゆる例外をスローします。

void 部分特殊化コンストラクタ

14-19) 予期しない値の初期化によってスローされたあらゆる例外をスローします。
21,22) 予期しない値の初期化によってスローされた例外をスローします。

欠陥報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 3886 C++23 overload ( 6 ) のデフォルトテンプレート引数は T であった 以下のように変更された std:: remove_cv_t < T >

関連項目

(C++23)
予期しない値として表現される
(クラステンプレート)
インプレース構築タグ
(タグ)
expected における予期しない値のインプレース構築タグ
(タグ)