- 791 名前:デフォルトの名無しさん mailto:sage [2017/11/18(土) 23:20:13.09 ID:np1Yc2el0.net]
- >>776
static_cast じゃコンパイル通らない。 "*(long long*)&f = i" は double 型のオブジェクトに long long 型の参照を通してアクセスしているので 未定義動作になる。結果は「最適化で削除してしまう」に限らず、何でもアリだよ。 これが「「同一のメモリを違う型としてalias」に該当しないという理屈も無いでしょ。 memcpy の結果が定義されてるのは、同じ型のオブジェクト間でのコピーだけだったかと。 違う型の間で memcpy した結果の値が実は定義されてるということなら実に興味深いので ぜひ規格の該当箇所を示して欲しい。 この場合の C スタイルキャストの動作は reinterpret_cast に丸投げされるだけなので話は変わらないよ。
|

|