Il problema è che il compilatore non conosce la dimensione di void, quindi non puoi fare una cosa come ptr1[x] perché per arrivare all'elemento x non sa di quanto spostarsi.
Non è vero che non deve avere un valore di ritorno comunque: void* significa che deve ritornare un puntatore a un tipo sconosciuto.