2017-07-11 5 views

答えて

4

このような比較はうまく行われますが、結果は不明です。オブジェクトへのポインタを比較

[expr.rel]/3以下のように定義される:

- 二つのポインタが同じ配列の異なる要素に、またはそのサブオブジェクトを指している場合、を指すポインタ高い下付き文字を持つ要素はより大きい。

- 1つのポインタが配列の要素またはそのサブオブジェクトを指し、別のポインタが配列の最後の要素を1つ指す場合、後者のポインタはより大きい値を比較します。

- 2つのポインタが同じオブジェクトの異なる非静的データメンバーまたはそのようなメンバーのサブオブジェクトを指している場合、後で宣言されたメンバーへのポインタは、2つのメンバーが同じアクセス制御を持つ11)、そのクラスは組合ではない。

[expr.rel]/4二つのオペランドpqは(5.10)に等しい比較する場合、p<=q及びp>=q両方がtruep<qととp>q両方を収率はfalseをもたらします。そうでなければ、ポインタpポインタqp>=qp>qq<=p超えるとを比較し、そしてq<pすべてtruep<=qp<qq>=p、及びq>p全てをもたらす場合falseをもたらします。それ以外の場合は、各演算子の結果は指定されません。

ヌルポインタは[expr.rel]/3の三節のいずれにも該当しない、そしてそれは、よりも非NULLポインタ未満のどちらを比較します。この場合は、[expr.rel]/4の "otherwise"節に該当します。

+0

あなたは完全にp4を見逃しました。 –

+0

@ T.C。私のC++ 14のp4には何も関係ありません。 C++ 17に新しいものがありますか? –

+0

"そうでなければ、各演算子の結果は未定義です。" –

関連する問題