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.

Reply via email to