Spec#, nullables and more

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Sat Nov 6 06:51:22 PDT 2010


On 11/6/10 12:13 AM, Rainer Deyke wrote:
> On 11/5/2010 17:41, Walter Bright wrote:
>> In other words, I create an array that I mean to fill in later, because
>> I don't have meaningful data for it in advance.
>
> That's a faulty idiom.  A data structure that exists but contains no
> valid data is a bug waiting to happen - no, it /is/ a bug, even if it
> does not yet manifest as incorrect observable behavior.  (Or at best,
> it's an unsafe optimization technique that should be wrapped up in an
> encapsulating function.)

To find an array that always has initialized data, look no further than 
std::vector. There is no way to grow an std::vector without filling it 
with data under user's control. The only place where std::vector assumes 
a default is the resize function:

void vector<T>::resize(size_type newSize, T filler = T());

If that default went away, the user would always be required to provide 
a filler when growing the vector.


Andrei


More information about the Digitalmars-d mailing list