So che l'aritmetica dei puntatori non è consentita per i puntatori null. Ma immagina di avere qualcosa del genere:
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)
È possibile (permesso) avere l' end()
implementazione di cui sopra ? O è necessario avere:
int *end() const { return (arraySize == 0) ? nullptr : (arrayBegin + arraySize); }
evitare l'aritmetica del puntatore con nullptr perché arrayBegin
è null per un array vuoto (nonostante arraySize
sia anche zero in questo caso)?
So che è possibile archiviare int *end;
anziché unsigned size;
e lasciare che la dimensione sia calcolata come end-begin
- ma poi arriva lo stesso problema: è consentito calcolare nullptr - nullptr
?
Gradirei in particolare i riferimenti standard.