diff --git a/libcxx/include/limits b/libcxx/include/limits index e8581cf9c321d..ae93fcd7164fd 100644 --- a/libcxx/include/limits +++ b/libcxx/include/limits @@ -107,6 +107,7 @@ template<> class numeric_limits; #else # include <__config> # include <__type_traits/is_arithmetic.h> +# include <__type_traits/is_same.h> # include <__type_traits/is_signed.h> # if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) @@ -220,7 +221,7 @@ protected: static _LIBCPP_CONSTEXPR const bool is_modulo = !std::is_signed<_Tp>::value; # if defined(__i386__) || defined(__x86_64__) || defined(__wasm__) - static _LIBCPP_CONSTEXPR const bool traps = true; + static _LIBCPP_CONSTEXPR const bool traps = is_same::value; # else static _LIBCPP_CONSTEXPR const bool traps = false; # endif diff --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/traps.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/traps.pass.cpp index 66e149bf58d1b..c08f9db7b8fad 100644 --- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/traps.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/traps.pass.cpp @@ -10,6 +10,8 @@ // traps +// XFAIL: FROZEN-CXX03-HEADERS-FIXME + #include #include "test_macros.h" @@ -33,17 +35,17 @@ test() int main(int, char**) { test(); - test(); - test(); - test(); - test(); + test(); + test(); + test(); + test(); #if TEST_STD_VER > 17 && defined(__cpp_char8_t) - test(); + test(); #endif - test(); - test(); - test(); - test(); + test(); + test(); + test(); + test(); test(); test(); test();