I read on the internet many tutorials that explained how to use lambdas with the standard library (such as std::find
), and they all were very interesting, but I couldn't find any that explained how I can use a lambda for my own functions.
For example:
int main()
{
int test = 5;
LambdaTest([&](int a) { test += a; });
return EXIT_SUCCESS;
}
How should I declare LambdaTest
? What's the type of its first argument? And then, how can I call the anonymous function passing to it - for example - "10" as its argument?
If you don't want to template everything, you can do the following:
I would like to contribute this simple but self-explanatory example. It shows how to pass "callable things" (functions, function objects, and lambdas) to a function or to an object.
Given that you probably also want to accept function pointers and function objects in addition to lambdas, you'll probably want to use templates to accept any argument with an
operator()
. This is what the std-functions like find do. It would look like this:Note that this definition doesn't use any c++0x features, so it's completely backwards-compatible. It's only the call to the function using lambda expressions that's c++0x-specific.