Lambdas und erfassen von verweisen auf lokale Variablen : der Zugriff auf die nach dem Umfang

Leite ich meine lokale Variablen per Referenz zu zwei lambda. Ich nenne diese Lambda-Ausdrücke außerhalb der Funktion Bereich. Ist dies undefined ?

std::pair<std::function<int()>, std::function<int()>> addSome() {
    int a = 0, b = 0;
    return std::make_pair([&a,&b] {
        ++a; ++b;
        return a+b;
        }, [&a, &b] {
            return a;
        });
}

int main() {
    auto f = addSome();
    std::cout << f.first() << " " << f.second();
    return 0;
}

Wenn es nicht ist, jedoch änderungen in einem lambda-Ausdruck nicht in den anderen reflektiert lambda.

Bin ich Missverständnis pass-by-reference im Rahmen der lambdas ?

Schreibe ich die Variablen und es scheint zu funktionieren gut mit keine runtime-Fehler mit Ausgabe

2 0. Wenn es funktioniert, dann würde ich erwarten, dass die Ausgabe 2 1.

InformationsquelleAutor Ashish Negi | 2015-01-05
Schreibe einen Kommentar