http://pc8.2ch.net/test/read.cgi/tech/1136690107/996

>union {int *upi; char *upv;} u;
>
>int *pi;
>char *pv;
>
>pi = static_cast<int *>(pv); /* ok */
>pi = reinterpret_cast<int *&>(pv); /* ng */
>u.upv = pv;
>pi = u.upi; /* ng; 上と同じ */

ng とは何を指す? ( ill-formed でも undefined-behavior でもない)

助け船: reinterpret_cast の写像は implementation-behavior