summaryrefslogtreecommitdiff
path: root/asl/types/status.hpp
diff options
context:
space:
mode:
authorSteven Le Rouzic <steven.lerouzic@gmail.com>2025-03-18 22:31:59 +0100
committerSteven Le Rouzic <steven.lerouzic@gmail.com>2025-03-18 22:39:35 +0100
commit4884b594330dea41d04d776d14a5cb18d9a354bc (patch)
treeb159defa21f10017baab0800c3848b3e9706940c /asl/types/status.hpp
parenta7475b6af21717f59c1b3d0dcb0fd6c1198a9fdc (diff)
Make status implementation more correct wrt type punning
Diffstat (limited to 'asl/types/status.hpp')
-rw-r--r--asl/types/status.hpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/asl/types/status.hpp b/asl/types/status.hpp
index df96cd8..de95670 100644
--- a/asl/types/status.hpp
+++ b/asl/types/status.hpp
@@ -22,15 +22,17 @@ enum class status_code : uint8_t
invalid_argument = 4,
};
+struct StatusInternal;
+
class status
{
- void* m_payload{};
+ StatusInternal* m_payload{};
- static constexpr void* status_to_payload(status_code code)
+ static constexpr StatusInternal* status_to_payload(status_code code)
{
return code == status_code::ok
? nullptr
- : bit_cast<void*>((static_cast<uintptr_t>(code) << 1) | 1);
+ : bit_cast<StatusInternal*>((static_cast<uintptr_t>(code) << 1) | 1);
}
static constexpr status_code payload_to_status(void* payload)