This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
GCC support for C++ noexcept
- From: Jeffrey Walton <noloader at gmail dot com>
- To: "gcc-help at gcc dot gnu dot org" <gcc-help at gcc dot gnu dot org>
- Date: Sun, 26 Jul 2015 21:10:17 -0400
- Subject: GCC support for C++ noexcept
- Authentication-results: sourceware.org; auth=none
- Reply-to: noloader at gmail dot com
I'm working with a library that has a class that throws in its dtor.
It dates back to the 1990s, so we are paying the tax now...
According to GCC 4.6 release notes
(https://gcc.gnu.org/gcc-4.6/changes.html), GCC got noexcept in 4.6.
However, I'm testing the change under MinGW with the 4.8.1 compiler.
Its resulting in:
g++ -DNDEBUG -g2 -O3 -march=native -Wall -Wextra -Wno-type-limits
-Wno-unknown-pragmas -pipe -c algparam.cpp
In file included from algparam.cpp:7:0:
algparam.h:262:2: warning: identifier 'noexcept' is a keyword in C++11 [-Wc++0x-
compat]
virtual ~AlgorithmParametersBase() CRYPTOPP_THROW
^
algparam.h:262:35: error: expected ';' at end of member declaration
virtual ~AlgorithmParametersBase() CRYPTOPP_THROW
^
In file included from pch.h:10:0,
from algparam.cpp:3:
config.h:519:34: error: expected identifier before 'false'
# define CRYPTOPP_THROW noexcept(false)
^
algparam.h:262:37: note: in expansion of macro 'CRYPTOPP_THROW'
virtual ~AlgorithmParametersBase() CRYPTOPP_THROW
^
config.h:519:34: error: expected ',' or '...' before 'false'
# define CRYPTOPP_THROW noexcept(false)
GCC does not appear to define __cplusplus under MinGW, so I can't
perform the test __cpluplus >= 201103L.
$ g++ -dM -E - < /dev/null | grep cplusplus
$
$ g++ -std=c++11 -dM -E - < /dev/null | grep cplusplus
cc1.exe: warning: command line option '-std=c++11' is valid for
C++/ObjC++ but not for C [enabled by default]=
How do I test for the noexcept feature?