Further P0135 refinement.
commitc821ae1a57320c4b1ba47afef6136b534f830351
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 8 Oct 2016 16:23:26 +0000 (8 16:23 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 8 Oct 2016 16:23:26 +0000 (8 16:23 +0000)
treeaf475d0e794d94b605e4e12b2a7ae82b9d1972cd
parentde0cd80ffd976cff7c128506124b28459dfe2592
Further P0135 refinement.

* call.c (build_user_type_conversion_1): Consider conversions from
a single element in an initializer-list.
(build_temp): Undo early_elide_copy change.
(build_over_call): Check that we don't try to copy a TARGET_EXPR
in C++17 mode.  Set user_conv_p here.
(convert_like_real): Not here.
(check_self_delegation): Split out from...
(build_special_member_call): ...here.  Handle C++17 copy elision.
* cvt.c (early_elide_copy): Remove.
(ocp_convert): Undo early_elide_copy change.
* except.c (build_throw): Likewise.
* init.c (expand_default_init): Likewise.
* typeck.c (cp_build_modify_expr): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@240889 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/cp/ChangeLog
gcc/cp/call.c
gcc/cp/cp-tree.h
gcc/cp/cvt.c
gcc/cp/except.c
gcc/cp/init.c
gcc/cp/typeck.c
gcc/testsuite/g++.dg/cpp0x/initlist12.C
gcc/testsuite/g++.dg/cpp1z/elide1.C
libstdc++-v3/testsuite/20_util/variant/compile.cc