https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107858
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever confirmed|0 |1
Summary|Variable in generic lambda |structed binding with auto
|incorrectly considered to |type and for all loop in a
|be a dependent name |template considered a type
| |dependent name
Last reconfirmed| |2022-11-24
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
This is unrelated to generic lambdas and can reproduce with just a templated
function:
```
struct y
{
template<int>
void foo() const {}
};
template<typename T>
struct pair
{
T a, b;
};
template<class t>
void bar(void)
{
pair<y> x[10];
for (auto const &[a, b] : x)
a.foo<0>();
}
```
Note the forall loop is required.
I wonder if that is because begin and end are considered type depdent ...
But not using structured binding, GCC does not considered them as type depdent.
Confirmed.