std::function<void()> create_function (args...)
{
int x = initial_value (args...);
return [x] () mutable
{
std::cout << x++ << std::endl;
};
}
Я обнаружил, что мне нужно ключевое слово mutable
для лямбды, в противном случае x
является константой.
Если я вызову create_function
несколько раз, каждый из возвращаемых функциональных объектов будет иметь свою собственную копиюx
или это общий доступ?
Чтобы уточнить: если бы я хотел такой функциональности до C ++ 11, мне пришлось бы написать класс для инкапсуляции захвата, и в этом случае у меня было бывыбор сделать x
переменной-членом или глобальной / статической.Если x
является константой, это не имеет значения.Как язык определяет хранение x
в отношении разных экземпляров лямбды?