aboutsummaryrefslogtreecommitdiff
path: root/src/openvic-simulation/utility/Utility.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/openvic-simulation/utility/Utility.hpp')
-rw-r--r--src/openvic-simulation/utility/Utility.hpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/openvic-simulation/utility/Utility.hpp b/src/openvic-simulation/utility/Utility.hpp
new file mode 100644
index 0000000..e8d7205
--- /dev/null
+++ b/src/openvic-simulation/utility/Utility.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+namespace OpenVic::utility {
+ [[noreturn]] inline void unreachable() {
+ // Uses compiler specific extensions if possible.
+ // Even if no extension is used, undefined behavior is still raised by
+ // an empty function body and the noreturn attribute.
+#ifdef __GNUC__ // GCC, Clang, ICC
+ __builtin_unreachable();
+#elif defined(_MSC_VER) // MSVC
+ __assume(false);
+#endif
+ }
+}