#include <functional>
#include <iostream>
struct foo {} x;
void run(std::function<std::string(const foo&)> func)
{
std::cout << func(x);
}
int main(){
auto get_functor = [&](const bool check) {
return [&](const foo& sr)->std::string {
if(check){
return "some string";
}
return "another string";
};
};
run(get_functor(true));
}
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnN0cnVjdCBmb28ge30geDsKCnZvaWQgcnVuKHN0ZDo6ZnVuY3Rpb248c3RkOjpzdHJpbmcoY29uc3QgZm9vJik+IGZ1bmMpCnsKICAgc3RkOjpjb3V0IDw8IGZ1bmMoeCk7Cn0KCgppbnQgbWFpbigpewoKICBhdXRvIGdldF9mdW5jdG9yID0gWyZdKGNvbnN0IGJvb2wgY2hlY2spIHsKICAgICAgcmV0dXJuICBbJl0oY29uc3QgZm9vJiBzciktPnN0ZDo6c3RyaW5nIHsKICAgICAgICAgaWYoY2hlY2spewogICAgICAgICAgICAgIHJldHVybiAic29tZSBzdHJpbmciOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuICJhbm90aGVyIHN0cmluZyI7CiAgICAgIH07CiAgfTsKICBydW4oZ2V0X2Z1bmN0b3IodHJ1ZSkpOwp9