C++相談室 part47
■ このスレッドは過去ログ倉庫に格納されています
0101デフォルトの名無しさん
2006/02/16(木) 22:52:30>>>30 の主張は、2つの型 T と U のいずれか一方が void で他方が void でないとき、
void *に対して有効なポータブルな操作は実質的にstatic_cast(とNULL判定)だけだから、
void *と非voidへのポインタを対等に扱ってもしょうがない。
つまり、次のような関数があったとき、
void *func(void *pv)
{
return (int *)pv + 1;
}
この関数のまともな使い方は、有効なint *を渡して、結果をint *にキャストして使うことだけだ。
この使い方は一般に次のように書ける。
int *a = /* something */;
void *b = (int *)func(a);
そして、
assert(b == a + 1);
このassertがポータブルに成立することを確かめてほしい。
>用語「拡張」については JIS X3014 1.4 処理系の適合の 8 を参照されたい
さんくす。
■ このスレッドは過去ログ倉庫に格納されています