1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| int a;
float b;
auto l1 = [](int i) -> int { return i; } // prend un int en parametre, retourne un int, ne capture rien donc ni a ni b ne sont visible dans le corp de la lambda.
auto l2 = [a](int i) -> int { return i * a; } // on capture a par copie, a est donc visible dans la lambda.
auto l3 = [a, &b](int i) -> int { b = 0.0f; return i * a; } // capture a par copie, b par référence
class Foo {
void f() { }
void bar {
auto l = [this]() { f(); }; // this est toujours capturé par référence, ne prend pas de paramètre et retourne void
}
};
auto l4 = [=]() { }; // capture tout par copie, a, b, l1, l2 et l3 ici
auto l5 = [&]() { }; // capture tout par référence
auto l6 = [a, &]() { }; // capture a par copie, tout le reste par référence
auto l7 = [&a, =]() { }; // capture a par référence, tout le reste par copie |
Partager