Boost logo

Boost :

Subject: Re: [boost] boost::mpl::for_each and value_initialized
From: Niels Dekker - address until 2010-10-10 (niels_address_until_2010-10-10_at_[hidden])
Date: 2010-01-13 12:11:20

Peter Foelsche wrote:
> in boost_1_41_0 there is still an unconditional call to memset in
> value_initialized()

Fernando Cacciola and I originally added the memset call within
value_initialized() for MSVC only, because MSVC's implementation of
value-initialization was known to incorrectly leave some bytes
uninitialized, in some very relevant use cases.
Thereby we also added extra unit tests, which were passed by MSVC by then,
because of the memset. But unfortunately they failed on other compilers
(GCC, Borland/Codegear and Sun), because of similar value-initialization
issues. That's when we thought it was wise to just have the memset call
there for all compilers:

Do I understand correctly that you want the memset call to be skipped for
those compiler versions that have implemented value-initialization entirely
correctly? Do you know exactly which compiler versions do implement
value-initialization correctly?

Personally I do appreciate that the behavior of value_initialized is now
exactly the same for all compilers. But I do understand you're concerned
about the performance penalty of the memset call, for those compilers that
have implemented value-initialization correctly. If so, can you please
create a ticket, preferably including a patch?

Kind regards,


Niels Dekker
Scientific programmer at LKEB, Leiden University Medical Center 

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