Quando usar const void *?

Eu tenho essa função de teste muito simples que estou usando para descobrir o que está acontecendo com o qualificador const.

int test(const int* dummy)
{
   *dummy = 1;
   return 0;
}

Este me lança um erro com o GCC 4.8.3. No entanto, este compila:

int test(const int* dummy)
{
   *(char*)dummy = 1;
   return 0;
}

Portanto, parece que o qualificador const funciona apenas se eu usar o argumento sem converter para outro tipo.

Recentemente eu vi códigos que usavam

test(const void* vpointer, ...)

Pelo menos para mim, quando usei void *, tenho a tendência deCaracteres* para aritmética de ponteiro em pilhas ou para rastreamento. Como podeconst void * impedir que as funções da sub-rotina modifiquem os dados nos quaisvpointer está apontando?