Это не так, как выглядит for
.Вы пытаетесь вызвать лямбду, где компилятор ожидает, что вы объявите int
:
for( int a, int2, ...; a < 2; ++a );
Теперь
Если я использую обычную функцию вместо лямбды,программа прекрасно компилируется
Да, но, вероятно, она не делает то, что вы думаете.
void f(int& b)
{
cin >> b;
}
// ...
for( int a, f(a); a < 2; ++a );
Здесь цикл объявляет две int
переменные, названные a
и f
.Цикл не вызывает f()
, как вы могли бы ожидать.
Попробуйте вместо этого:
for( int a; cin >> a && a < 2; ++a );