voidポインタの使いどころがわかりません。

どんな型にでもキャストして使えるので便利そうですが、
例えば関数の引数にすると、意図しない型を入れても
コンパイルエラーにならないので危険な気がしています。

関数の引数にvoidポインタを指定するのは例えばどういう
場面なのでしょうか?

どういう型の引数がくるかわからないとき?
わからなかったらそもそもどうキャストして
使えばいいのかもわからない気がするのですが??