First of all type-safe means that anything that a compiler can catch straight away if done incorrectly.
Now, I heard function pointers are not type safe however when
Function pointers are in fact type checked and are type safe.