From 8b0bc70db73b48d833a3b5791e55921768cf6932 Mon Sep 17 00:00:00 2001 From: Dominick Allen Date: Mon, 31 Mar 2025 08:33:08 -0500 Subject: Remove reinterpret_cast usage in favor of std::bit_cast. --- include/fud_result.hpp | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) (limited to 'include/fud_result.hpp') 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(m_data.data()); + return *std::bit_cast(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(m_data.data()); + return *std::bit_cast(m_data.data()); } [[nodiscard]] constexpr const E& getError() const& { fudAssert(isError()); - // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) - return *reinterpret_cast(m_data.data()); + return *std::bit_cast(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(m_data.data()); + return *std::bit_cast(m_data.data()); } [[nodiscard]] constexpr T&& takeOkay() { fudAssert(isOkay()); - // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) - return std::move(*reinterpret_cast(m_data.data())); + return std::move(*std::bit_cast(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(m_data.data())); + return std::move(*std::bit_cast(m_data.data())); } [[nodiscard]] constexpr E&& takeError() { fudAssert(isError()); - // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) - return std::move(*reinterpret_cast(m_data.data())); + return std::move(*std::bit_cast(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(m_data.data())); + return std::move(*std::bit_cast(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(m_data.data())->~T(); + std::bit_cast(m_data.data())->~T(); m_discriminant = Discriminant::Invalid; } else if (m_discriminant == Discriminant::Error) { - // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) - reinterpret_cast(m_data.data())->~E(); + std::bit_cast(m_data.data())->~E(); m_discriminant = Discriminant::Invalid; } } -- cgit v1.2.3