История изменений
Исправление fsb4000, (текущая версия) :
Т.е. std::function внутри – это структура-функтор, с полями-захваченными ссылками и значениями, и одним методом. Если function создаётся без new – это значит структура создаётся без new.
std::function
это структура, которая стирает тип конкретной функции, лямбды или функционального объекта, и хранит в себе
- конструктор копирования переданного функционального объекта
- деструктор переданного функционального объекта
- оператор вызова переданного функционального объекта
- указатель на копию объекта переданного в конструкторе
- буфер, который используется, чтобы не выделять память из кучи для создания копии объекта, если объект помещается в этот буфер
Вот пример, и в комментариях примерно как std::function выглядит: https://godbolt.org/z/a8x1a6nGP
Исходная версия fsb4000, :
Т.е. std::function внутри – это структура-функтор, с полями-захваченными ссылками и значениями, и одним методом. Если function создаётся без new – это значит структура создаётся без new.
std::function
это структура, которая стирает тип конкретной функции, лямбды или функционального объекта, и хранит в себе
- конструктор копирования переданного функционального объекта
- деструктор переданного функционального объекта
- оператор вызова переданного функционального объекта
- указатель на копию объекта переданного в конструкторе
- буфер, который используется, чтобы не выделять память из кучи для создания копии объекта, если объект помещается в этот буфер
Вот пример, и в комментариях примерно как std::function выглядит: https://godbolt.org/z/zWbKboxx9