diff options
author | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2025-03-18 22:31:59 +0100 |
---|---|---|
committer | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2025-03-18 22:39:35 +0100 |
commit | 4884b594330dea41d04d776d14a5cb18d9a354bc (patch) | |
tree | b159defa21f10017baab0800c3848b3e9706940c /asl/types/status.hpp | |
parent | a7475b6af21717f59c1b3d0dcb0fd6c1198a9fdc (diff) |
Make status implementation more correct wrt type punning
Diffstat (limited to 'asl/types/status.hpp')
-rw-r--r-- | asl/types/status.hpp | 8 |
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) |