Я пишу лямбда-конструктор функций, который выглядит примерно так:
std::function<...> Builder(const SomeObj& obj, const std::string& some_string) {
return [&, some_string]() {
cout << some_string;
}
}
SomoeObj obj;
std::string some_string = "some_string";
Builder(obj, some_string)(); // => this will print an empty string instead of "some_string"
Мой вопрос:
почему он не захватывает при копировании и имеет локальная строка "some_string" для самого лямбда-тела?
как заставить это работать?