https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104981
Patrick Palka <ppalka at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ppalka at gcc dot gnu.org --- Comment #3 from Patrick Palka <ppalka at gcc dot gnu.org> --- The problem seems to be that we're passing the unlowered reference 'this_ref' to the ctor call, which overload resolution doesn't expect. Using convert_from_reference fixes this: diff --git a/gcc/cp/coroutines.cc b/gcc/cp/coroutines.cc index 97bc211ff67..31d0cb7fd16 100644 --- a/gcc/cp/coroutines.cc +++ b/gcc/cp/coroutines.cc @@ -4851,6 +4851,7 @@ morph_fn_to_coro (tree orig, tree *resumer, tree *destroyer) this_ref = convert_to_reference (rt, this_ref, CONV_STATIC, LOOKUP_NORMAL, NULL_TREE, tf_warning_or_error); + this_ref = convert_from_reference (this_ref); vec_safe_push (promise_args, this_ref); } else if (parm.rv_ref) or equivalently, removing the call to convert_to_reference above which seems to be unneeded?