LINUX.ORG.RU

История изменений

Исправление 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).