Лямбда - это на самом деле просто компактный способ написания функции.
Лямбда, о которой идет речь:
[&](int input) -> int
{
int x = 2;
return x;
};
- безымянная функция, принимающая один параметр int
(то естьне использует) и возвращает int
.Он также захватывает свой контекст с помощью ссылочной семантики, чего он также не использует.
Если вы хотите использовать лямбду в сочетании с функцией, которая ожидает int
, вам нужно вызвать лямбда, может быть так:
class A
{
public:
void f(int a){
_a = a;
}
private:
int _a;
};
class B
{
public:
B()
{
A instance; // = new A(); <- not C++
auto mylambda =
[](int input) -> int
{
int x = 2;
return x;
};
instance.f( mylambda(3) );
}
};