ヌルポインターの場合、ポインター演算は許可されていません。しかし、私がこのようなものを持っていると想像してください:
class MyArray {
int *arrayBegin; // pointer to the first array item, NULL for an empty array
unsigned arraySize; // size of the array, zero for an empty array
public:
int *begin() const { return arrayBegin; }
int *end() const { return arrayBegin + arraySize; } // possible? (arrayBegin may be null)
上記のend()
実装は可能ですか?それとも持っている必要があります:
int *end() const { return (arraySize == 0) ? nullptr : (arrayBegin + arraySize); }
arrayBegin
空の配列ではnullであるため、nullptrを使用したポインタ演算を回避するには(arraySize
この場合もゼロであるにもかかわらず)?
int *end;
代わりに保存unsigned size;
してサイズを計算させるend-begin
ことは可能ですが、同じ問題が発生しnullptr - nullptr
ます。計算は許可されますか?
特に標準的な参照をいただければ幸いです。