From 4b3defe4afe32dbf4c8feaf49b97907129e05834 Mon Sep 17 00:00:00 2001 From: Dimitrij Mijoski Date: Wed, 14 Sep 2022 22:48:58 +0200 Subject: [PATCH] Suppress warning "-Wstrict-aliasing" for GCC 5 and 6 --- src/catch2/benchmark/catch_constructor.hpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/catch2/benchmark/catch_constructor.hpp b/src/catch2/benchmark/catch_constructor.hpp index 86bbfb00de..f2a743ab6d 100644 --- a/src/catch2/benchmark/catch_constructor.hpp +++ b/src/catch2/benchmark/catch_constructor.hpp @@ -54,14 +54,18 @@ namespace Catch { template void destruct_on_exit(std::enable_if_t* = nullptr) { } - T& stored_object() { - return *static_cast(static_cast(data)); - } +#if defined( __GNUC__ ) && __GNUC__ <= 6 +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif + T& stored_object() { return *reinterpret_cast( data ); } T const& stored_object() const { - return *static_cast(static_cast(data)); + return *reinterpret_cast( data ); } - +#if defined( __GNUC__ ) && __GNUC__ <= 6 +# pragma GCC diagnostic pop +#endif alignas( T ) unsigned char data[sizeof( T )]{}; };