summaryrefslogtreecommitdiff
path: root/asl/status.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'asl/status.hpp')
-rw-r--r--asl/status.hpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/asl/status.hpp b/asl/status.hpp
index 42695c3..169dfce 100644
--- a/asl/status.hpp
+++ b/asl/status.hpp
@@ -118,6 +118,8 @@ public:
return {};
}
+ constexpr status&& throw_status() && { return ASL_MOVE(*this); }
+
friend void AslFormat(Formatter& f, const status&);
template<typename H>
@@ -150,4 +152,6 @@ ASL_DEFINE_ERROR_(internal)
ASL_DEFINE_ERROR_(runtime)
ASL_DEFINE_ERROR_(invalid_argument)
+#define ASL_TRY(VALUE) if (VALUE.ok()) {} else { return ASL_MOVE(VALUE).throw_status(); }
+
} // namespace asl