Каков размер 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

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