Ваша ссылка частично верна. Особенно, когда вы не имеете дело с объектами (структурами) или вообще с типами, которые еще не выделены. Использование нативных типов, таких как int, double и т. Д. И void-указателей (например, для контейнера), почти всегда является непростым делом, потому что у вас есть выбор: привести int (для double это не работает) к указателю вам нужно выделить дополнительную память для типа данных.
Первый выбор плох, потому что он не переносимый, 0 могут быть недопустимы в качестве значения, и он просто чувствует себя плохо. Второй вариант тратит впустую память и действительно (сильно) замедляется из-за дополнительных выделений.
Но в большинстве случаев вы имеете дело не с нативными типами, а с объектами, лучше сказать с указателями на объекты, которые уже выделены, по крайней мере, я. Я никогда не нуждался в хэш-таблице или карте для целых или двойных чисел. И иметь разные реализации контейнеров только для безопасности типов указателей мне кажется неправильным, потому что каждая реализация будет увеличивать ваш двоичный размер. Поэтому, если вам нужен только контейнер для хранения ваших указателей, при использовании указателей void замедления или потери памяти не будет.
Но обратите внимание, это все о реализации контейнеров, как, например, в статье в блоге, которую вы упомянули. В общем, есть много вещей, которые вы не можете выполнить без использования указателей void.