If a program attempts to access ([defns.access]) the stored value of an object
whose dynamic type is T through a glvalue
whose type is not similar ([conv.qual]) to T
(or its corresponding signed or unsigned types)
the behavior is undefined.
[Example 1: int foo(float* f, int* i){*i =1;
*f =0.f; // undefined behavior, glvalue is not similar to intreturn*i;
}int main(){int x =0;
x = foo(reinterpret_cast<float*>(&x), &x);
} — end example]