summaryrefslogtreecommitdiffstats
path: root/src/result.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/result.hpp')
-rw-r--r--src/result.hpp11
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; }
};