LINUX.ORG.RU

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

Исправление fsb4000, (текущая версия) :

Т.е. std::function внутри – это структура-функтор, с полями-захваченными ссылками и значениями, и одним методом. Если function создаётся без new – это значит структура создаётся без new.

std::function это структура, которая стирает тип конкретной функции, лямбды или функционального объекта, и хранит в себе

  1. конструктор копирования переданного функционального объекта
  2. деструктор переданного функционального объекта
  3. оператор вызова переданного функционального объекта
  4. указатель на копию объекта переданного в конструкторе
  5. буфер, который используется, чтобы не выделять память из кучи для создания копии объекта, если объект помещается в этот буфер

Вот пример, и в комментариях примерно как std::function выглядит: https://godbolt.org/z/a8x1a6nGP

Исходная версия fsb4000, :

Т.е. std::function внутри – это структура-функтор, с полями-захваченными ссылками и значениями, и одним методом. Если function создаётся без new – это значит структура создаётся без new.

std::function это структура, которая стирает тип конкретной функции, лямбды или функционального объекта, и хранит в себе

  1. конструктор копирования переданного функционального объекта
  2. деструктор переданного функционального объекта
  3. оператор вызова переданного функционального объекта
  4. указатель на копию объекта переданного в конструкторе
  5. буфер, который используется, чтобы не выделять память из кучи для создания копии объекта, если объект помещается в этот буфер

Вот пример, и в комментариях примерно как std::function выглядит: https://godbolt.org/z/zWbKboxx9