P1008R1 - prohibit aggregates with user-declared constructors
commitd3940cf09bdd4d57931f21c0b132f5722d917171
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 31 Jul 2018 14:19:26 +0000 (31 14:19 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 31 Jul 2018 14:19:26 +0000 (31 14:19 +0000)
tree219af350267ed3b842757bed1fbe2a10d182b37a
parente082b9c1502fe0d66666150d2496968695b15321
P1008R1 - prohibit aggregates with user-declared constructors
* class.c (check_bases_and_members): For C++2a set
CLASSTYPE_NON_AGGREGATE based on TYPE_HAS_USER_CONSTRUCTOR rather than
type_has_user_provided_or_explicit_constructor.

* g++.dg/ext/is_aggregate.C: Add tests with deleted or defaulted ctor.
* g++.dg/cpp0x/defaulted1.C (main): Ifdef out for C++2a B b = {1};.
* g++.dg/cpp0x/deleted2.C: Expect error for C++2a.
* g++.dg/cpp2a/aggr1.C: New test.
* g++.dg/cpp2a/aggr2.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263115 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/cp/ChangeLog
gcc/cp/class.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/defaulted1.C
gcc/testsuite/g++.dg/cpp0x/deleted2.C
gcc/testsuite/g++.dg/cpp2a/aggr1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp2a/aggr2.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/is_aggregate.C