Boost logo

Boost :

From: Philippe A. Bouchard (philippeb_at_[hidden])
Date: 2003-02-24 19:05:32


Fernando Cacciola (Home) wrote:

[...]

>> Well it depends on the platform but if sizeof(bool) == sizeof(int) on
> Intel,
>
> ^^^^^^^
> Were does this 'int' comes from?

sizeof(bool) may vary, you just don't know (1, 4, 8, ...). On Intel, if
sizeof(bool) == 4 == sizeof(int) optional<>::m_storage will be aligned to
the next integer boundary.

>> m_storage will be aligned to the next word boundary i.e. aligned
>> like an integer.
>>
> Anyway, you just said that it depends on the platform, so I wouldn't
> say
> that m_storage *is*
> aligned like bool, at most, it could be.

Yes, exactly.

>>>> - Maybe aligned_storage<> should always destruct its object. It
>>>> would be the user's responsability to construct the object before
>>>> its destruction, otherwise the result would be undefined.
>>>>
>>> Why would this be useful?
>>
>> I don't know, it is just another alternative that I personally
>> prefer.
>>
> Why do you prefer this?

Because the main purpose of aligned_storage<> is to postpone its
construction? This means that it *must* be constructed sooner or later?

>>>> - Maybe we could create 2 separate type lists if optional<> is used
>>>> many times in the same object, gathering m_initialized types and
>>>> m_storage in separate lists:
>>>>
>>> What for ?
>>
>> I think bool arrays use bitfields
>>
> Which bool arrays?
>
> bool x[..] ;
>
> dont't.
>
> std::vector<bool>
>
> maybe, but are less efficient in that case.

I guess boost::array<bool, size_t> is also optimized...?

Philippe A. Bouchard


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk