https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91529
Nicholas Krause <xerofoify at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |xerofoify at gmail dot com --- Comment #2 from Nicholas Krause <xerofoify at gmail dot com> --- I was unable to find the proper marcos to fix the issue for this patch in the manual. However these lines: - /* FIXME P0135 doesn't say how to handle direct initialization from a - type with a suitable conversion operator. Let's handle it like - copy-initialization, but allowing explict conversions. */ - tsubst_flags_t sub_complain = tf_warning; - if (!is_dummy_object (instance)) - /* If we're using this to initialize a non-temporary object, don't - require the destructor to be accessible. */ - sub_complain |= tf_no_cleanup; if (BRACE_ENCLOSED_INITIALIZER_P (arg) - && !CONSTRUCTOR_IS_DIRECT_INIT (arg)) - /* An init-list arg needs to convert to the parm type (83937), so fall - through to normal processing. */ - arg = error_mark_node; - else if (!reference_related_p (class_type, TREE_TYPE (arg))) - arg = perform_implicit_conversion_flags (class_type, arg, - sub_complain, - flags); + && !TYPE_HAS_LIST_CTOR (class_type) + && CONSTRUCTOR_NELTS (arg) == 1) + arg = CONSTRUCTOR_ELT (arg, 0)->value; + or the ones added with a + seem to be the issue. Why are we not checked for initializing references in braces and not checked if its direct as those should be done regularly for inlining in normal processing. Maybe I'm missing something but this seems odd. A lot of the other parts of the patch just seems to be rewrites so this seems most likely.