Boost logo

Boost :

From: rwgk (rwgk_at_[hidden])
Date: 2002-03-08 14:06:30

--- In boost_at_y..., "Peter Dimov" <pdimov_at_m...> wrote:
> From: "Howard Hinnant" <hinnant_at_t...>
> > Meanwhile vector<double> v(10, uninitialized_flag) breaks no
> > invariants. The vector is destructible. The vector elements can
> > assigned into. If your hardware doesn't mind (mine doesn't), you
> > even assign from this uninitialized vector. I can't think of a
> > why you would want to do that though.
> You can't v.insert(v.begin(), 5.0) because copying the
uninitialized doubles
> is undefined behavior. The insert() preconditions do not say that
you can't.
> Something is wrong. :-)

In my mind

vector<double> vec(100000, uninitialized_flag());

means these things:

1. I do not want to waste time for something that I am
absolutely sure I do not need (the default construction)

2. I am about to fill the memory with the given number
of elements by some other facility, and

3. I am taking responsibility and I have read the
documentation for uninitialized_flag() which told me
to initialize the memory before doing /anything/ else
with it.

Being safe by default is great, but IMO forcing everyone to
waste time only to be safe under any conceivable eventuality
is misguided and may be one of the reasons why C++ still has
a bad reputation among many (non-computer) scientists.


Boost list run by bdawes at, gregod at, cpdaniel at, john at