diff options
author | Dominick Allen <djallen@librehumanitas.org> | 2025-03-31 08:33:08 -0500 |
---|---|---|
committer | Dominick Allen <djallen@librehumanitas.org> | 2025-03-31 08:33:08 -0500 |
commit | 8b0bc70db73b48d833a3b5791e55921768cf6932 (patch) | |
tree | 862ae34933a7fc9f480038d974f59d7683a82605 /include/fud_result.hpp | |
parent | c426110f24516f92ecb8a5374e2a281f2c79787a (diff) |
Remove reinterpret_cast usage in favor of std::bit_cast.
Diffstat (limited to 'include/fud_result.hpp')
-rw-r--r-- | include/fud_result.hpp | 30 |
1 files changed, 10 insertions, 20 deletions
diff --git a/include/fud_result.hpp b/include/fud_result.hpp index 88d0dc4..0394156 100644 --- a/include/fud_result.hpp +++ b/include/fud_result.hpp @@ -200,8 +200,7 @@ class [[nodiscard]] Result { [[nodiscard]] constexpr const T& getOkay() const& { fudAssert(isOkay()); - // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) - return *reinterpret_cast<const T*>(m_data.data()); + return *std::bit_cast<const T*>(m_data.data()); } [[nodiscard]] constexpr const T& getOkayOr(const T& alternative) const& @@ -210,15 +209,13 @@ class [[nodiscard]] Result { // NOLINTNEXTLINE(bugprone-return-const-ref-from-parameter) return alternative; } - // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) - return *reinterpret_cast<const T*>(m_data.data()); + return *std::bit_cast<const T*>(m_data.data()); } [[nodiscard]] constexpr const E& getError() const& { fudAssert(isError()); - // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) - return *reinterpret_cast<const E*>(m_data.data()); + return *std::bit_cast<const E*>(m_data.data()); } [[nodiscard]] constexpr const E& getErrorOr(const E& alternative) const& @@ -227,15 +224,13 @@ class [[nodiscard]] Result { // NOLINTNEXTLINE(bugprone-return-const-ref-from-parameter) return alternative; } - // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) - return *reinterpret_cast<const E*>(m_data.data()); + return *std::bit_cast<const E*>(m_data.data()); } [[nodiscard]] constexpr T&& takeOkay() { fudAssert(isOkay()); - // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) - return std::move(*reinterpret_cast<T*>(m_data.data())); + return std::move(*std::bit_cast<T*>(m_data.data())); } [[nodiscard]] constexpr T&& takeOkayOr(T&& alternative) @@ -243,15 +238,13 @@ class [[nodiscard]] Result { if (!isOkay()) { return std::move(alternative); } - // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) - return std::move(*reinterpret_cast<T*>(m_data.data())); + return std::move(*std::bit_cast<T*>(m_data.data())); } [[nodiscard]] constexpr E&& takeError() { fudAssert(isError()); - // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) - return std::move(*reinterpret_cast<E*>(m_data.data())); + return std::move(*std::bit_cast<E*>(m_data.data())); } [[nodiscard]] constexpr E&& takeErrorOr(E&& alternative) @@ -259,8 +252,7 @@ class [[nodiscard]] Result { if (!isError()) { return std::move(alternative); } - // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) - return std::move(*reinterpret_cast<E*>(m_data.data())); + return std::move(*std::bit_cast<E*>(m_data.data())); } private: @@ -307,12 +299,10 @@ class [[nodiscard]] Result { constexpr void destroy() noexcept { if (m_discriminant == Discriminant::Okay) { - // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) - reinterpret_cast<T*>(m_data.data())->~T(); + std::bit_cast<T*>(m_data.data())->~T(); m_discriminant = Discriminant::Invalid; } else if (m_discriminant == Discriminant::Error) { - // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) - reinterpret_cast<E*>(m_data.data())->~E(); + std::bit_cast<E*>(m_data.data())->~E(); m_discriminant = Discriminant::Invalid; } } |