C++相談室 part47
■ このスレッドは過去ログ倉庫に格納されています
0051デフォルトの名無しさん
2006/02/16(木) 00:38:24え? 49 じゃないけど、了解じゃねぇだろ。あんた >46 なんだよな?
「 void* vp の指すメモリ位置に int の 10 を書き込み、
書き込んだ int 型オブジェクトに続くメモリ位置を指すように
vp を更新する」
という処理を対象として。以下の3つの実装が提示されている。
1: ip = static_cast<int*>(vp); *ip = 10; vp = ip + 1;
2: union { void* vp; int* ip; } u; u.vp = vp; *u.ip++ = 10; vp = u.vp;
3: *reinterpret_cast<int*&>(vp)++ = 10;
ここで
1 は http://pc8.2ch.net/test/read.cgi/tech/1136690107/943
2 は http://pc8.2ch.net/test/read.cgi/tech/1136690107/944
3 は http://pc8.2ch.net/test/read.cgi/tech/1136690107/945
という対応になる。
さて、未定義でも処理系依存でも不定でも無い実装を「ポータブル」と呼び、
ポータブルを O ポータブルでないものを X として順に並べると、
>>46 は XXX
>>49 は OXX
と言っていると思う。
まだ「 1 はポータブルか?」という命題が残ってるんじゃね?
ちなみに俺はポータブルだと思う。
■ このスレッドは過去ログ倉庫に格納されています