From 2bfd4950802a223dde37a08a205812b6dfdfeb61 Mon Sep 17 00:00:00 2001 From: dmitrykobets-msft <89153909+dmitrykobets-msft@users.noreply.github.com> Date: Thu, 14 Apr 2022 11:08:28 -0700 Subject: Suppress -Wfloat-equal warning in implementation of gsl::narrow (#1043) In the implementation of gsl::narrow, there is a comparison `static_cast(t) != u` which may be comparing two floats. The comparison here is done purposefully to categorize ill effects of narrowing conversion, since the values being compared *should* be the same when compared with `operator==`. Note, using #pragma GCC will suppress this warning for both GCC and Clang. --- tests/CMakeLists.txt | 4 ++++ tests/utils_tests.cpp | 2 ++ 2 files changed, 6 insertions(+) (limited to 'tests') diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 891569b..68e18ec 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -89,6 +89,7 @@ if(MSVC) # MSVC or simulating MSVC > $<$: -Weverything + -Wfloat-equal -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-covered-switch-default # GTest @@ -122,6 +123,7 @@ else() -Wpedantic -Wshadow -Wsign-conversion + -Wfloat-equal -Wno-deprecated-declarations # Allow tests for [[deprecated]] elements $<$,$>: -Weverything @@ -227,6 +229,7 @@ if(MSVC) # MSVC or simulating MSVC > $<$: -Weverything + -Wfloat-equal -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-missing-prototypes @@ -250,6 +253,7 @@ else() -Wpedantic -Wshadow -Wsign-conversion + -Wfloat-equal $<$,$>: -Weverything -Wno-c++98-compat diff --git a/tests/utils_tests.cpp b/tests/utils_tests.cpp index 39b4ca2..715073f 100644 --- a/tests/utils_tests.cpp +++ b/tests/utils_tests.cpp @@ -149,5 +149,7 @@ TEST(utils_tests, narrow) EXPECT_TRUE( narrow>(std::complex(4, 2)) == std::complex(4, 2)); EXPECT_THROW(narrow>(std::complex(4.2)), narrowing_error); + + EXPECT_TRUE(narrow(float(1)) == 1); } #endif // GSL_KERNEL_MODE -- cgit v1.2.3