Boost logo

Boost :

From: Joel de Guzman (djowel_at_[hidden])
Date: 2003-04-19 20:13:44

Giovanni Bajo wrote:
> (sorry for the previous empty post)
> Hello,
> Since the aligned storage "wastes" bytes to align the type, is it
> possible to place the boolean "m_initialized" within the alignment
> padding? Basically, you could define[] one byte bigger,
> and use it for m_initialized. This way, you could save space in many
> situations.
> I would propose a patch but I don't understand all the details of the
> alignment issues. Besides, I'm not sure it would be legal to do so.

Heh, I was just thinking about this the other day...

Right off the bat, we can detect at compile-time if the padding
is non-zero and stuff m_initialized in the padding if it is not.
I think this can be done by putting the m_initialized handling
in the aligned_storage template. There will be a specialization
for the case where the padding is non-zero and the flag is placed
in the padding and another specialization for the case where padding
is zero and the flag is a data member. Generic accessor member functions
can be provided: bool is_initialized() const, void is_initialized(bool f);

Joel de Guzman
joel at

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