Некоторые преимущества использования std::any по сравнению с void* в C++:
- Типобезопасность. 14 В отличие от void*, std::any обеспечивает безопасность типов: если попытаться получить доступ к данным, указав не тот тип, то произойдёт исключение. 34
- Оптимизация малых объектов. 23 Для простых типов, таких как int или double, std::any не выделяет память динамически, а для больших типов используется дополнительная память. 3
- Управление жизненным циклом объекта. 2 std::any не только хранит данные, но и управляет жизнью содержащегося объекта: поддерживает его строительство, копирование, перемещение и уничтожение. 2
- Гибкость. 3 Главным плюсом std::any является возможность хранить что угодно в объекте и использовать его в ситуациях, когда не известен набор доступных типов. 13
Таким образом, std::any — более безопасная и стандартизированная альтернатива void*, особенно в случаях, когда важны хранение произвольных объектов, безопасность типов и возможность управлять жизненным циклом объекта. 24