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




_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to