// expected<cv void, E>部分特殊化
constexpr const E& error() const & noexcept; // (1)
constexpr E& error() & noexcept; // (2)
constexpr const E&& error() const && noexcept; // (3)
constexpr E&& error() && noexcept; // (4)
概要
エラー値を取得する。
事前条件
has_value() == false
戻り値
動作説明用のメンバ変数として、エラー値を保持するunex
を導入する。
- (1), (2) : エラー値を保持していたら、
unex
- (3), (4) : エラー値を保持していたら、
std::move(unex)
例外
投げない
例
#include <cassert>
#include <expected>
#include <iostream>
#include <string>
int main()
{
std::expected<void, std::string> x = std::unexpected{"ERR"};
assert(not x.has_value());
std::cout << x.error() << std::endl;
}
12
#include <cassert>
#include <expected>
#include <iostream>
#include <string>
int main()
{
std::expected<void, std::string> x = std::unexpected{"ERR"};
assert(not x.has_value());
std::cout << x.error() << std::endl;
}
出力
ERR
バージョン
言語
- C++23
処理系
- Clang: 16.0 ✅
- GCC: 12.1 ✅
- ICC: ??
- Visual C++: ??