Каков размер std::function?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Каков размер std::function?

Сообщение Anonymous »

Как сказано в вопросе, каков размер std::function? Если размер от чего-то зависит, существует ли теоретический максимум?
Размер замыкания (лямбда-функция) отличается от std::function или указателя. Исследуются размеры std::function, лямбда-выражений и указателей на функции. В этом примере std::function имеет размер 32 байта.
Согласно https://en.cppreference.com/w/cpp/utili ... ction.html, хранимый вызываемый объект std::function называется target. Но я не вижу здесь ничего другого из того, что на самом деле хранится.
В соответствии с моим любимым чат-ботом недели (gemini) std::function хранит...
  • 8 байт для указателя на функцию
  • 8 байт для указателя this
  • 8 байт для указателя на виртуальную таблицу
  • 8 байт для небольшого объекта буфер оптимизации
Это соответствует тому, что видно в связанных вопросах и ответах по SO, но чат-боты редко правильно понимают все нюансы, поэтому я спрашиваю экспертов по SO.

Подробнее здесь: https://stackoverflow.com/questions/798 ... tdfunction
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»