// expected<cv void, E>部分特殊化
template<class G = E> constexpr E error_or(G&& e) const &; // (1)
template<class G = E> constexpr E error_or(G&& e) &&; // (2)
概要
エラー値もしくは指定された値を取得する。
適格要件
- (1) :
is_copy_constructible_v<E> == true && is_convertible_v<G, E> == true
- (2) :
is_move_constructible_v<E> == true && is_convertible_v<G, E> == true
戻り値
- (1) :
has_value() ? std::forward<G>(e) : error()
- (2) :
has_value() ? std::forward<G>(e) : std::move(error())
例
#include <expected>
#include <iostream>
#include <string>
int main()
{
std::expected<void, std::string> x;
std::cout << x.error_or("-") << std::endl;
std::expected<void, std::string> y = std::unexpected{"ERR"};
std::cout << y.error_or("-") << std::endl;
}
出力
-
ERR
バージョン
言語
- C++23
処理系
- Clang: ??
- GCC: 13.0 ✅
- ICC: ??
- Visual C++: ??