diff options
author | Jason Merrill <jason@redhat.com> | 2016-11-17 16:41:09 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2016-11-17 16:41:09 -0500 |
commit | f8691e98180da3205b8a19ff34f6656c46c4c92a (patch) | |
tree | ff06f568ba682d228b389f4a5503aa3aa3caa885 /gcc | |
parent | 07a67f7b09745a86d8890f09b7d1260da6f41103 (diff) | |
download | gcc-f8691e98180da3205b8a19ff34f6656c46c4c92a.zip gcc-f8691e98180da3205b8a19ff34f6656c46c4c92a.tar.gz gcc-f8691e98180da3205b8a19ff34f6656c46c4c92a.tar.bz2 |
PR c++/78124 - list-initialization and inherited ctor
* name-lookup.c (do_class_using_decl): Set CLASSTYPE_NON_AGGREGATE.
From-SVN: r242563
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cp/cp-tree.h | 1 | ||||
-rw-r--r-- | gcc/cp/name-lookup.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/inh-ctor23.C | 16 |
4 files changed, 20 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 50d0ae2..24564ec 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2016-11-17 Jason Merrill <jason@redhat.com> + PR c++/78124 - list-initialization and inherited ctor + * name-lookup.c (do_class_using_decl): Set CLASSTYPE_NON_AGGREGATE. + PR c++/78369 - {} as default argument * call.c (build_special_member_call): Handle CONSTRUCTOR. diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index cb1b9fa..e5f9113 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -5707,7 +5707,6 @@ extern bool type_has_user_nondefault_constructor (tree); extern tree in_class_defaulted_default_constructor (tree); extern bool user_provided_p (tree); extern bool type_has_user_provided_constructor (tree); -extern bool type_has_user_provided_or_explicit_constructor (tree); extern bool type_has_non_user_provided_default_constructor (tree); extern bool vbase_has_user_provided_move_assign (tree); extern tree default_init_uninitialized_part (tree); diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index 7ad65b8..4f80e8d 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -3382,6 +3382,7 @@ do_class_using_decl (tree scope, tree name) { maybe_warn_cpp0x (CPP0X_INHERITING_CTORS); name = ctor_identifier; + CLASSTYPE_NON_AGGREGATE (current_class_type) = true; } if (constructor_name_p (name, current_class_type)) { diff --git a/gcc/testsuite/g++.dg/cpp0x/inh-ctor23.C b/gcc/testsuite/g++.dg/cpp0x/inh-ctor23.C new file mode 100644 index 0000000..1bb05a2 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/inh-ctor23.C @@ -0,0 +1,16 @@ +// PR c++/78124 +// { dg-do compile { target c++11 } } + +struct base { + explicit constexpr base(int&&) {} +}; + +struct derived: base { + using base::base; +}; + +int main() +{ + derived d { 0 }; +} + |