https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47320
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- N.B. I've just reverted this fix as part of r12-4268-gfec283b63d7f24f4c37792dd07ab1055186ba88f The numeric limits specialization is defined unconditionally, so is correct whether or not _GLIBCXX_USE_WCHAR_T is defined, and so this test should always pass. The problem here was that is_integral<wchar_t>::value was false, so it used the do_test(false_type) overload which is intended for floating-point types. r11-4590-g29e418485848c4a6943d8561cd8fb0b1abf14015 changed that, so that is_integral<wchar_t> is always true (as required by the C++ standard) even if wchar_t support is not present in libc. Since that change, this test should always pass for wchar_t. I'm changing the test to use numeric_limits<T>::is_integer instead of is_integral<T> anyway, because is_integer<__int128> depends on __STRICT_ANSI__ and so the test fails in a similar way for __int128 as it did for wchar_t.