Implement P1286R2, Contra CWG1778
authorJason Merrill <jason@redhat.com>
Wed, 23 Oct 2019 20:41:26 +0000 (16:41 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Wed, 23 Oct 2019 20:41:26 +0000 (16:41 -0400)
commit0998d2fd59e7a5eb3a3566c57625702bbdc6a05f
tree18bcab37dfecdae810feb52e18f4461f970f4fbe
parentcbb28ef1534b13373bc38533c9e05035fe84894b
Implement P1286R2, Contra CWG1778

The C++11 requirement that an explicit exception-specification on a
defaulted function match the implicit one was found to be problematic for
std::atomic.  This paper, adopted in February, simply removes that
requirement: if an explicitly defaulted function has a different
exception-specification, that now works just like a user-written function:
either it isn't noexcept when it could be, or it is noexcept and will call
terminate if an exception is thrown.

* method.c (defaulted_late_check): Don't check explicit
exception-specification on defaulted function.
(after_nsdmi_defaulted_late_checks): Remove.
* parser.h (struct cp_unparsed_functions_entry): Remove classes.
* parser.c (unparsed_classes): Remove.
(push_unparsed_function_queues, cp_parser_class_specifier_1):
Adjust.

From-SVN: r277351
gcc/cp/ChangeLog
gcc/cp/method.c
gcc/cp/parser.c
gcc/cp/parser.h
gcc/testsuite/g++.dg/DRs/dr1778.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/defaulted23.C
gcc/testsuite/g++.dg/cpp0x/defaulted43.C