GeezerVison is showing cpprefjp.github.io — std::expected - cpprefjp C++日本語リファレンス
最終更新日時:
2026年09月30日 18時24分32秒 (JST)
Akira Takahashi
が更新
履歴
編集
class template
<expected>
std:: expected (C++23)
namespace std {
// プライマリテンプレート
template < class T , class E >
class expected ;
// T=cv void 部分特殊化テンプレート
template < class T , class E >
requires is_void_v < T >
class expected < T , E > ;
}
概要
expectedクラスは、任意の型Tの値を正常値とし任意の型Eの値をエラー値として、正常もしくはエラーいずれかの状態を取ることを値として表現できる型である。
このクラスは、ヒープからの動的メモリ確保を行わない。
実装は配置newのような機能によって、スタック領域のメモリのみを使用する。
適格要件
型Tおよび型Eは、参照型、関数型、in_place_t 、unexpect_t のいずれでもないこと。
型Tはunexpected の特殊化ではないこと。
型Tが(CV修飾された)void型でなければ、型TはCpp17Destructible 要件を満たすこと。
型Eは非オブジェクト型、配列型、unexpectedの特殊化、CV修飾された型のいずれでもないこと。
型EはCpp17Destructible 要件を満たすこと。
メンバ関数(プライマリテンプレート)
構築・破棄
代入
名前
説明
対応バージョン
operator=
代入演算子
C++23
emplace
正常値型のコンストラクタ引数から直接構築する
C++23
swap
他のexpectedオブジェクトとデータを入れ替える
C++23
値の観測
モナド操作
比較
メンバ関数(T=cv void 部分特殊化テンプレート)
構築・破棄
代入
値の観測
(expected<cv void, E> 部分特殊化では、演算子オーバーロードoperator->およびメンバ関数value_orは提供されない。)
モナド操作
比較
メンバ型
名前
説明
対応バージョン
value_type
正常値の型T
C++23
error_type
エラー値の型E
C++23
unexpected_type
unexpected<E>
C++23
template<class U> rebind
expected<U, error_type>
C++23
非メンバ関数
名前
説明
対応バージョン
swap
2つのexpected<T, E>オブジェクトを入れ替える
C++23
swap
2つのexpected<cv void, E>オブジェクトを入れ替える
C++23
例
出力
5
"out of domain"
"divide by zero"
バージョン
言語
処理系
関連項目
参照