As a general rule, C casts MUST NOT be used. The only exception to this
requirement is described below.
Rationale: good programming behavior includes proper type handling.
For the purpose of so-called "genericity", explicit conversion between
compatible pointer types using casts MAY be used, but
only with the explicit allowance from the
assistants. "Compatible" pointer types are types accessible from one
another in the subtyping or inheritance graph of the project.
Hint: if you do not know what are subtyping nor inheritance, avoid using
casts.