summaryrefslogtreecommitdiff
path: root/asl/utility.hpp
diff options
context:
space:
mode:
authorSteven Le Rouzic <steven.lerouzic@gmail.com>2024-10-10 23:38:35 +0200
committerSteven Le Rouzic <steven.lerouzic@gmail.com>2024-12-20 15:35:58 +0100
commite020805cb140ed98d09e606a867b910fce78ad15 (patch)
tree08e79fbfa9e799b15f170bdeb198c2ba19287189 /asl/utility.hpp
parent8dfd173285df515fe9b41d970321da9d049460f8 (diff)
Integers formatting
Diffstat (limited to 'asl/utility.hpp')
-rw-r--r--asl/utility.hpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/asl/utility.hpp b/asl/utility.hpp
index 2cbf8db..2d9ef05 100644
--- a/asl/utility.hpp
+++ b/asl/utility.hpp
@@ -1,6 +1,7 @@
#pragma once
#include "asl/meta.hpp"
+#include "asl/layout.hpp"
#define ASL_MOVE(expr_) (static_cast<::asl::un_ref_t<decltype(expr_)>&&>(expr_))
@@ -17,6 +18,12 @@ T exchange(T& obj, U&& new_value)
return old_value;
}
+template<trivially_copyable U, trivially_copyable T>
+constexpr U bit_cast(T value) requires (size_of<T> == size_of<U>)
+{
+ return __builtin_bit_cast(U, value);
+}
+
#define ASL_DELETE_COPY(T) \
T(const T&) = delete; \
T& operator=(const T&) = delete;