https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82840

--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> ---
GCC changed behaviour for C++1z mode at r240889:

    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.

That refers to the guaranteed copy elision paper: https://wg21.link/p0135r1

Reply via email to