История изменений
Исправление dimgel, (текущая версия) :
который позволяет не выделять память если список захвата не очень большой
Хотя если честно я не вполне догоняю: я думал что там всегда всё на стек падает. Разве что если какой-нибудь типа vector по значению захватывается, но тут уж вряд ли компилятор сможет copy constructor вектора выкинуть (разве что в случае const access с учётом scope).
UPD. Т.е. std::function внутри – это структура-функтор, с полями-захваченными ссылками и значениями, и одним методом. Если function создаётся без new – это значит структура создаётся без new.
Исправление dimgel, :
который позволяет не выделять память если список захвата не очень большой
Хотя если честно я не вполне догоняю: я думал что там всегда всё на стек падает. Разве что если какой-нибудь типа vector по значению захватывается, но тут уж вряд ли компилятор сможет copy constructor вектора выкинуть (разве что в случае const access).
UPD. Т.е. std::function внутри – это структура-функтор, с полями-захваченными ссылками и значениями, и одним методом. Если function создаётся без new – это значит структура создаётся без new.
Исходная версия dimgel, :
который позволяет не выделять память если список захвата не очень большой
Хотя если честно я не вполне догоняю: я думал что там всегда всё на стек падает. Разве что если какой-нибудь типа vector по значению захватывается, но тут уж вряд ли компилятор сможет copy constructor вектора выкинуть (разве что в случае const access).