result: implicit unwrap on conversion to result T
authorMarcus Fritzsch <marcus_fritzsch@mentor.com>
Tue, 25 Jul 2017 11:02:24 +0000 (13:02 +0200)
committerMarcus Fritzsch <marcus_fritzsch@mentor.com>
Tue, 8 Aug 2017 15:24:00 +0000 (17:24 +0200)
Signed-off-by: Marcus Fritzsch <marcus_fritzsch@mentor.com>
src/result.hpp

index 377d5a2..e22fde9 100644 (file)
@@ -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; }
 };