/* File: lambda5.cpp * Demonstrates returning a lambda expression that captures * the parameters as well as a local variable. */ #include // must #include to use std::function< > // #include using namespace std ; std::function< int(int) > makeWeirdLambda(int x, int y) { int z = 7 ; return [x,y,z](int n){ int w = y + z ; return n+x+w; } ; } int main () { std::function< int(int) > add20 = makeWeirdLambda(3,10) ; cout << "add20(5) = " << add20(5) << endl ; cout << "add20(13) = " << add20(13) << endl ; std::function< int(int) > add112 = makeWeirdLambda(5,100) ; cout << "add112(8) = " << add112(8) << endl ; cout << "add112(20) = " << add112(20) << endl ; }