Browse Source

c++: Remove deprecated dynamic exception specification

Dynamic exception specification using `throw()` is deprecated since
C++11 and removed in C++17. This change replaces `throw()` with
`noexcept` when compiling for newer standards.

Co-authored-by: Sven Linker <sven.linker@kernkonzept.com>
Signed-off-by: Marcus Haehnel <marcus.haehnel@kernkonzept.com>
Sven Linker 9 months ago
parent
commit
9827836ce5
1 changed files with 9 additions and 3 deletions
  1. 9 3
      include/sys/cdefs.h

+ 9 - 3
include/sys/cdefs.h

@@ -58,9 +58,15 @@
 #  define __NTH(fct)	__attribute__ ((__nothrow__ __LEAF)) fct
 # else
 #  if defined __cplusplus && __GNUC_PREREQ (2,8)
-#   define __THROW	throw ()
-#   define __THROWNL	throw ()
-#   define __NTH(fct)	__LEAF_ATTR fct throw ()
+/* Dynamic exception specification is deprecated since C++11, so
+   we only use it when compiling for an earlier standard.  */
+#   if __cplusplus < 201103UL
+#    define __THROW	throw ()
+#   else
+#    define __THROW	noexcept
+#   endif
+#   define __THROWNL	__THROW
+#   define __NTH(fct)	__LEAF_ATTR fct __THROW
 #  else
 #   define __THROW
 #   define __THROWNL