'const void" est autorisé simplement parce qu'il n'y a pas de point de prendre le compilateur coup de pied hors de cette seule exception à une règle générale, et il n'y a aucun mal à le quitter.
Il y a quelques discussion ci-dessus que " const void*' n'est pas très utile (par exemple. Quelle est l'utilité de const void *? Je peux voir comment void * const peut être, mais pas l'ancien. – Spidey)
En fait, 'const void*' est parfois indispensable.
Il déclare que la chose souligné est en lecture seule, par opposition à 'void* const" qui ne déclare que le pointeur lui-même est constante, mais pas la chose qu'il points de.
De mon expérience, il est le pointeur constant de 'const void*" qui est le plus utile des deux formes. Bien sûr, il est aussi "const void* const' ce qui signifie que le pointeur de la chose et il points de est une constante.
void* est normalement utilisé comme un moyen de transmettre non spécifique des pointeurs autour (eg. memcpy()).
Si vous souhaitez passer dire un 'const char*' à une telle fonction, alors vous ne pouvez pas utiliser 'void*' ou vous perdez le fait que la chose dont elle est constante et ne peut pas être modifié. Actuel compilateurs C++ refusera de compiler qu'il aurait implicitement une fonte de la const loin, et à juste titre que ces données peuvent être en lecture seule de la mémoire et éventuellement provoquer une exception si quelque chose essaie d'écrire.
C'est pourquoi le deuxième argument de memcpy() est 'const void*" et non pas simplement 'void*'