Implement C++11 delegating constructors.
authorVille Voutilainen <ville.voutilainen@gmail.com>
Mon, 5 Dec 2011 15:49:25 +0000 (17:49 +0200)
committerJason Merrill <jason@gcc.gnu.org>
Mon, 5 Dec 2011 15:49:25 +0000 (10:49 -0500)
commit238e471cadfb1c2995e6bc4c995328eacc39d0da
tree34698b82ecd5ca13de0629ef51d816a609fbb6ea
parent12c574caf6f0766266813fef7be8a2367a9d0700
Implement C++11 delegating constructors.

* cp-tree.h (enum cpp0x_warn_str): Add CPP0X_DELEGATING_CTORS.
* error.c (maybe_warn_cpp0x): Adjust.
* parser.c (cp_parser_mem_initializer_list): Use it.  Diagnose
multiple initializers if a delegating initializer is present.
* call.c (build_special_member_call): Convert an assert into an if.
* init.c (perform_target_ctor): New.
(emit_mem_initializers): Use it.
(expand_member_init, expand_default_init): Adjust.

Co-Authored-By: Pedro LamarĂ£o <pedro.lamarao@gmail.com>
From-SVN: r182012
13 files changed:
gcc/cp/ChangeLog
gcc/cp/call.c
gcc/cp/cp-tree.h
gcc/cp/error.c
gcc/cp/init.c
gcc/cp/parser.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/dc1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/dc2.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/dc3.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/dc4.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/dc5.C [new file with mode: 0644]
gcc/testsuite/g++.dg/template/meminit1.C