Общее правило заключается в том, что при приведении от указателя к void *
вы всегда должны возвращаться к тому, с которого изначально пришли.
Приведение к пустоте * иногда является необходимым злом из-за старых API,
И иногда это делается специально для создания «легкого» шаблона.Легкий шаблон - это место, где вы пишете код, который обрабатывает набор указателей на объекты, которые обрабатываются одинаково, и это предотвращает необходимость генерирования кода для каждого типа.
Вокруг этого кода у вас есть строго типизированный шаблон, который выполняет простую операцию приведения вперед и назад (вероятно, в любом случае встроенную), так что пользователи получают строго типизированный код, но реализация менее раздутая.