Вы должны фактически вызвать лямбду, используя оператор вызова (()
).В этом случае, поскольку лямбда-выражение нуждается в значении, вы должны использовать
int main () {
int a {5};
std::cout << [](int a) { return 2*a; }(a);
return 0;
}
В качестве альтернативы вы можете разделить два бита на
int main () {
int a {5};
auto func = [](int a) { return 2*a; };
std::cout << func(a);
return 0;
}
В этом случае, так как у вас нет захваталямбда, то, что происходит, это то, что лямбда преобразуется в указатель на функцию, и, поскольку этот указатель не равен нулю, выводится true.