Чтобы удерживать произвольно большие объекты, boost::any
/std::any
наверняка нужно выделить кучу пространства для объектов. Однако для небольших типов, размер которых меньше или равен указателю (int,char,bool,...
), any
может вместо этого сохранить значение на месте в слоте указателя или в какой-либо другой локальной памяти и не выделять кучу пространства. Но делает ли это выполнение?
У меня есть сценарий, в котором я часто храню небольшие типы в any
и только иногда более крупные типы, такие как string
s. Код довольно жаркий, и поэтому я задаю вопрос. Если оптимизация не выполняется, мне может быть лучше с собственной реализацией, которая хранит небольшие типы на месте.