Calling a function through an expression whose
function type is not call-compatible with
the function type of the called
function's definition results in undefined behavior.
[Example 1: using f_float =int(*)(float);
using f_int =int(*)(int);
int f1(float){return10; }int f2(int){return20; }int main(){returnreinterpret_cast<f_int>(f1)(20); // undefined behavior, the function type of the expression// is different from the called functions definition} — end example]