Compiling a gnulib testdir on macOS 11/arm64, I get this error: c++ -DHAVE_CONFIG_H -DEXEEXT=\"\" -I. -I../../gltests -I.. -DGNULIB_STRICT_CHECKING=1 -DIN_GNULIB_TESTS=1 -I. -I../../gltests -I.. -I../../gltests/.. -I../gllib -I../../gltests/../gllib -I/Users/haible/include -Wall -g -O2 -MT test-list-c++.o -MD -MP -MF $depbase.Tpo -c -o test-list-c++.o ../../gltests/test-list-c++.cc &&\ mv -f $depbase.Tpo $depbase.Po In file included from ../../gltests/test-list-c++.cc:20: In file included from ../../gltests/../gllib/gl_list.hh:26: In file included from ../gllib/stdlib.h:36: In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/stdlib.h:100: ../gllib/math.h:3095:43: error: 'isnan' is missing exception specification 'throw()' _GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan, isnan, bool) ^ /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/math.h:535:1: note: previous declaration is here isnan(float __lcpp_x) _NOEXCEPT { return __libcpp_isnan(__lcpp_x); } ^
This patch fixes it. 2021-03-20 Bruno Haible <br...@clisp.org> math C++ tests: Fix compilation error on macOS 11.2. * lib/math.in.h (isnan): For clang >= 12 on macOS, declare 'rpl_isnan', not 'isnan'. diff --git a/lib/math.in.h b/lib/math.in.h index 335505d..bbe86ad 100644 --- a/lib/math.in.h +++ b/lib/math.in.h @@ -2579,7 +2579,7 @@ _GL_EXTERN_C int rpl_isnanl (long double x) _GL_ATTRIBUTE_CONST; # if defined isnan || defined GNULIB_NAMESPACE _GL_MATH_CXX_REAL_FLOATING_DECL_1 (isnan) # undef isnan -# if __GNUC__ >= 6 || (defined __clang__ && !((defined __APPLE__ && defined __MACH__) || (defined __FreeBSD__ && __clang_major__ < 7) || defined __OpenBSD__ || (defined _WIN32 && !defined __CYGWIN__))) +# if __GNUC__ >= 6 || (defined __clang__ && !((defined __APPLE__ && defined __MACH__ && __clang_major__ < 12) || (defined __FreeBSD__ && __clang_major__ < 7) || defined __OpenBSD__ || (defined _WIN32 && !defined __CYGWIN__))) /* This platform's <cmath> possibly defines isnan through a set of inline functions. */ _GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan, rpl_isnan, bool)