https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113457
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- A little less than a month ago, Dec 21. I'm trying to bisect it. A slightly modified copy of trunk headers (to remove the use of explicit object member functions) compiles with GCC 13.1 but ICEs with the releases/gcc-13 branchpoint, so might be an ice-with-checking GCC 13.1 with -std=c++23 -fchecking=3 bails out with: gen.cc: In function 'void concat(concat<const std::initializer_list<int>&, const std::vector<int, std::allocator<int> >&, const std::array<double, 3>&>(const std::initializer_list<int>&, const std::vector<int, std::allocator<int> >&, const std::array<double, 3>&)::_Z6concatIJRKSt16initializer_listIiERKSt6vectorIiSaIiEERKSt5arrayIdLm3EEEESt9generatorIddvEDpOT_.Frame*)': gen.cc:12:1: error: type mismatch in 'component_ref' 12 | concat(Ranges&&... ranges) -> generator<double, double> | ^~~~~~ struct _Recursive_awaiter struct _Recursive_awaiter gen.cc:12:1: error: invalid LHS in gimple call frame_ptr->Yd0_2_3 = std::__gen::_Promise_erased<const double&>::yield_value<const std::initializer_list<int>&, std::allocator<std::byte> > (_15, _16); [return slot optimization] gen.cc:12:1: error: type mismatch in 'component_ref' struct _Recursive_awaiter struct _Recursive_awaiter gen.cc:12:1: error: invalid LHS in gimple call frame_ptr->Yd0_2_3 = std::__gen::_Promise_erased<const double&>::yield_value<const std::vector<int, std::allocator<int> >&, std::allocator<std::byte> > (_23, _24); [return slot optimization] gen.cc:12: confused by earlier errors, bailing out I'll attach the .ii I'm using.