Further P0135 refinement.
authorJason Merrill <jason@redhat.com>
Sat, 8 Oct 2016 16:23:26 +0000 (12:23 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Sat, 8 Oct 2016 16:23:26 +0000 (12:23 -0400)
commit36cbfdb06604b63e743d3644fdec7dd20d7c0843
treeaf475d0e794d94b605e4e12b2a7ae82b9d1972cd
parent80994c4654c32987e32430121e442df861226966
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.

From-SVN: r240889
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