I would like to know what is the correct type definition for the lambda presented below, so that the following code will compile using a conformant c++11 compiler:
It's std::function. Or possibly just bool(*)(int) if you prefer, since the lambda doesn't capture.
(The raw function pointer might be a bit more efficient, since std::function does (at least in some cases) require dynamic allocation for some type erasure magic.)