aboutsummaryrefslogtreecommitdiff
path: root/misc/sys
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2020-09-22 11:54:38 +0100
committerJonathan Wakely <jwakely@redhat.com>2020-09-22 11:54:38 +0100
commitd445d9ca8d961148ffde8ec597ecc0e050542024 (patch)
tree05ab85b8d8a52d7c1b3c2f054a1601ea67eeefb2 /misc/sys
parentcdf645427d176197b82f44308a5e131d69fb53ad (diff)
downloadglibc-d445d9ca8d961148ffde8ec597ecc0e050542024.tar
glibc-d445d9ca8d961148ffde8ec597ecc0e050542024.tar.gz
glibc-d445d9ca8d961148ffde8ec597ecc0e050542024.tar.bz2
glibc-d445d9ca8d961148ffde8ec597ecc0e050542024.zip
Define __THROW to noexcept for C++11 and later
The __THROW macro and friends expand to "throw ()" for C++ code, but that syntax is deprecated in C++11 and no longer supported at all since C++20. In order for glibc headers to be compatible with C++20, "noexcept" should be used instead. This patch uses "noexcept (true)" rather than just "noexcept", which is semantically equivalent, but avoids any possibility of parsing ambiguities if the next preprocessor token happens to be an opening parenthesis. This is probably unnecessary, but it seems safer to be cautious.
Diffstat (limited to 'misc/sys')
-rw-r--r--misc/sys/cdefs.h12
1 files changed, 8 insertions, 4 deletions
diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h
index 19d9cc5cfe..6b9763a92a 100644
--- a/misc/sys/cdefs.h
+++ b/misc/sys/cdefs.h
@@ -58,10 +58,14 @@
# define __NTHNL(fct) __attribute__ ((__nothrow__)) fct
# else
# if defined __cplusplus && __GNUC_PREREQ (2,8)
-# define __THROW throw ()
-# define __THROWNL throw ()
-# define __NTH(fct) __LEAF_ATTR fct throw ()
-# define __NTHNL(fct) fct throw ()
+# if __cplusplus >= 201103L
+# define __THROW noexcept (true)
+# else
+# define __THROW throw ()
+# endif
+# define __THROWNL __THROW
+# define __NTH(fct) __LEAF_ATTR fct __THROW
+# define __NTHNL(fct) fct __THROW
# else
# define __THROW
# define __THROWNL