diff options
author | Jason Merrill <jason@redhat.com> | 2012-10-15 03:32:03 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2012-10-15 03:32:03 -0400 |
commit | 85b5d65a94c66fed37b29b04010b93fd13936219 (patch) | |
tree | 8285868a5a9c87582ef3660e51cb5a55576cb450 /gcc/cp/ChangeLog | |
parent | d0d4f8c78e1b9d1038f0ec5fd0c59955dd1cc1f2 (diff) | |
download | gcc-85b5d65a94c66fed37b29b04010b93fd13936219.zip gcc-85b5d65a94c66fed37b29b04010b93fd13936219.tar.gz gcc-85b5d65a94c66fed37b29b04010b93fd13936219.tar.bz2 |
Implement C++11 inheriting constructors.
* cp-tree.h (cpp0x_warn_str): Add CPP0X_INHERITING_CTORS.
(DECL_INHERITED_CTOR_BASE, SET_DECL_INHERITED_CTOR_BASE): New.
(special_function_kind): Add sfk_inheriting_constructor.
* class.c (add_method): An inheriting ctor is hidden by a
user-declared one.
(one_inheriting_sig, one_inherited_ctor): New.
(add_implicitly_declared_members): Handle inheriting ctors.
* error.c (maybe_warn_cpp0x): Handle CPP0X_INHERITING_CTORS.
* init.c (emit_mem_initializers): Don't set LOOKUP_DEFAULTED
for an inheriting constructor.
* method.c (type_has_trivial_fn): Handle sfk_inheriting_constructor.
(type_set_nontrivial_flag): Likewise.
(add_one_base_init): Split out from...
(do_build_copy_constructor): ...here. Handle inheriting constructors.
(locate_fn_flags): Handle a list of arg types.
(synthesized_method_walk): Handle inheriting constructors.
(maybe_explain_implicit_delete): Likewise.
(deduce_inheriting_ctor): New.
(implicitly_declare_fn): Handle inheriting constructors.
* name-lookup.c (push_class_level_binding_1): An inheriting constructor
does not declare the base's name.
(do_class_using_decl): Allow inheriting constructors.
* pt.c (template_parms_to_args): Split from current_template_args.
(add_inherited_template_parms): New.
(tsubst_decl): Handle inheriting constructors.
* tree.c (special_function_p): Handle inheriting constructors.
Co-Authored-By: Ville Voutilainen <ville.voutilainen@gmail.com>
From-SVN: r192448
Diffstat (limited to 'gcc/cp/ChangeLog')
-rw-r--r-- | gcc/cp/ChangeLog | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 27f0d55..6621c11 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,34 @@ +2012-10-14 Jason Merrill <jason@redhat.com> + Ville Voutilainen <ville.voutilainen@gmail.com> + + Implement C++11 inheriting constructors. + * cp-tree.h (cpp0x_warn_str): Add CPP0X_INHERITING_CTORS. + (DECL_INHERITED_CTOR_BASE, SET_DECL_INHERITED_CTOR_BASE): New. + (special_function_kind): Add sfk_inheriting_constructor. + * class.c (add_method): An inheriting ctor is hidden by a + user-declared one. + (one_inheriting_sig, one_inherited_ctor): New. + (add_implicitly_declared_members): Handle inheriting ctors. + * error.c (maybe_warn_cpp0x): Handle CPP0X_INHERITING_CTORS. + * init.c (emit_mem_initializers): Don't set LOOKUP_DEFAULTED + for an inheriting constructor. + * method.c (type_has_trivial_fn): Handle sfk_inheriting_constructor. + (type_set_nontrivial_flag): Likewise. + (add_one_base_init): Split out from... + (do_build_copy_constructor): ...here. Handle inheriting constructors. + (locate_fn_flags): Handle a list of arg types. + (synthesized_method_walk): Handle inheriting constructors. + (maybe_explain_implicit_delete): Likewise. + (deduce_inheriting_ctor): New. + (implicitly_declare_fn): Handle inheriting constructors. + * name-lookup.c (push_class_level_binding_1): An inheriting constructor + does not declare the base's name. + (do_class_using_decl): Allow inheriting constructors. + * pt.c (template_parms_to_args): Split from current_template_args. + (add_inherited_template_parms): New. + (tsubst_decl): Handle inheriting constructors. + * tree.c (special_function_p): Handle inheriting constructors. + 2012-10-12 Jakub Jelinek <jakub@redhat.com> PR c/54381 |