Let\'s say, I have a class:
class A {
int a;
};
And I have a lambda:
auto function = [](A* a) {
a->a; // <== giv
You can do it by creating a friend function that returns the lambda function. It inherits the friend access:
struct A {
friend std::function f();
private:
int i;
void test() {std::cout << "test: " << i << "\n";}
};
std::function f() {
return [] (A &a, int i) {a.i = i; a.test(); };
}
int main() {
A a;
f()(a, 13);
return 0;
}