+-----------------------------------------------------------+
| |
| C has support for dynamic typing (in the form of void*) |
| |
+-----------------------------------------------------------+
I don't think people is scared of void*. However, it is pretty easy to introduce memory corruption bugs when it is used in big projects.
I find very wise to avoid it when it is not necessary or when there is an equivalent safer alternative (e.g C++ templates if available and applicable).
In this case however, is not only completely fine but I don't think there is a better way to do it.
Haha I can't stop cracking up! Although it reminds me of when I wrote a ray-tracer in high school. Every reflection distribution function took some kind of void* structure and did something unique with it.