#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));
}