https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119545
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2025-03-30 Ever confirmed|0 |1 Status|UNCONFIRMED |NEW --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Confirmed. A few different ways of fixing this, one is to supply the trailing return type for the lambda. That is replace: return [&]<size_t... _Inds>(index_sequence<_Inds...>) { With: return [&]<size_t... _Inds>(index_sequence<_Inds...>) -> bool { Or replace: return ((std::get<_Inds>(__t) == std::get<_Inds>(__u)) && ...); with return true && ((std::get<_Inds>(__t) == std::get<_Inds>(__u)) && ...); or return (bool) ((std::get<_Inds>(__t) == std::get<_Inds>(__u)) && ...); Which forces to use the conversion to bool. I will leave it up to the libstdc++ maintainers on how they will like to solve it.