- C++相談室 part128 [無断転載禁止]©2ch.net
597 :デフォルトの名無しさん[]:2016/12/15(木) 10:17:49.88 ID:T67tgzmG - >>596
>>592 は >>590に宛てたものだよ
|
- C++相談室 part128 [無断転載禁止]©2ch.net
598 :デフォルトの名無しさん[]:2016/12/15(木) 10:23:21.22 ID:T67tgzmG - 一応補足しとくと、Cで保証されてるのはunionの全く別の型からのアクセス
type punningと呼ばれるやつ
|
- C++相談室 part128 [無断転載禁止]©2ch.net
601 :デフォルトの名無しさん[]:2016/12/15(木) 10:49:41.51 ID:T67tgzmG - >>600
そのリンク先で期待通りにならないっていうのはstrict aliasing ruleのせいであってunionと直接関係ないよ 例のコードの関数は引数に渡された二つの互換性のない型がunionのメンバーと解らない状態だからね。
|
- C++相談室 part128 [無断転載禁止]©2ch.net
603 :デフォルトの名無しさん[]:2016/12/15(木) 11:18:18.89 ID:T67tgzmG - >>602
単純な話だよ。リンク先の例の関数はunionのメンバーとしてアクセスしてないでしょ?
|
- C++相談室 part128 [無断転載禁止]©2ch.net
605 :デフォルトの名無しさん[]:2016/12/15(木) 11:38:15.00 ID:T67tgzmG - >>604
それはちょっと違う 上にも書いたけどstrict aliasing ruleっていうのがあって互換性のない別の型にreinterpret_castして書き換えた後、元の型で参照しても書き換えた結果が反映されないということがあり得る。そのルールではcharなどのバイト型とかについては特別扱い strict aliasing ruleについては詳しくはググって。 解りやすい翻訳記事が出るから
|