diff options
-rw-r--r-- | src/result.hpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/result.hpp b/src/result.hpp index 377d5a2..e22fde9 100644 --- a/src/result.hpp +++ b/src/result.hpp @@ -22,7 +22,16 @@ struct result { bool is_ok() const { return this->t != nullopt; } bool is_err() const { return this->e != nullptr; } - T unwrap() { return this->t.value(); } + T unwrap() { + if (this->e != nullptr) { + throw std::logic_error(this->e); + } + return this->t.value(); + } + + operator T() { + return this->unwrap(); + } char const *unwrap_err() { return this->e; } }; |