823 名前: specify those circumstances in which an object may or may not be aliased. なんだから、やはりこれは alias されているかどうか?であって、アクセスできるかどうかではない。 ただしここを根拠に undefined behavior だから最適化してよし、としてるのはかなり強引で、 (というかここでalias云々がかなり唐突で、そもそもaliasの話をここではしていない) (D)がreinterpret_cast扱いだというのなら仕様内に矛盾があることになる。 そしてこの解釈(=reinterpret_castされたものは the dynamic type ではなく undefied behaviorだからどうなってもよし)が通るのなら、 reinterpret_castの存在価値がなくなってしまうし、 aliasとかせこいことを言わず、reinterpret_cast相当のところは全部undefined扱いで削除していいことになる。 というか、多分コンパイラ側はこの主張で、これに対してユーザ側が反対し、 結果、 alias とかいう折衷案でごまかしているように読める。(既に書いたがaliasが唐突過ぎ) 確かに正しくはunionを使うべきであり、この流れだと将来的には reinterpret_cast は廃止で union しろってことになるのか? しかし逆に言えば、C++89以来これで大して変わらないのなら、早々急に変わることもないか。 []