CD
Открытая адресация N элементов скушает N / load_factor * sizeof(T)
Size: a a a
CD
CD
CD
AT
N
AZ
AT
void *, что прячется внутри std::function, не нужно будет. Можно будет писать template<typename F> void g(F && f) { ... f(); } вместо void g(std::function<void ()> f); + реализация где-то в другом месте.AT
O
void *, что прячется внутри std::function, не нужно будет. Можно будет писать template<typename F> void g(F && f) { ... f(); } вместо void g(std::function<void ()> f); + реализация где-то в другом месте.std::function еще нужен если вдруг тебе понадобится хранить функтор где-то со стиранием типовAT
std::function еще нужен если вдруг тебе понадобится хранить функтор где-то со стиранием типовstd::variant, если всё на видуO
std::variant, если всё на видуAT
std::variant можно перечислить все типы (функциональных объектов и указателей на функцию). Они ж все видныO
std::variant можно перечислить все типы (функциональных объектов и указателей на функцию). Они ж все видныDS
std::function - это такой боксинг для замыканий, когда замыкания по факту (полностью или частично - см. small size optimization) уходят из стека в кучуm
std::variant можно перечислить все типы (функциональных объектов и указателей на функцию). Они ж все видныstd::funtion - callback. Его не заменить.AT
std::funtion - callback. Его не заменить.std::function и прочие void * вполне себе законныCD
std::variant можно перечислить все типы (функциональных объектов и указателей на функцию). Они ж все видны