void f(int a, void(*b)(int))
{
b(a);
}
int main()
{
int a = 5;
int b = 6;
f(10, [a, b](int x) { cout << a+b+x; });
return 0;
}
If I won't use 'a' and 'b' variables, everything works good, otherwise, C++ returns:
error: cannot convert 'main()::<lambda(int)>' to 'void (*)(int)''
note: initializing argument 2 of 'void f(int, void (*)(int))'