"Philippe A. Bouchard" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> David Abrahams wrote:
> > "Philippe A. Bouchard" <[EMAIL PROTECTED]> writes:
> >
> >> Yes, exactly.  Sorry if I wasn't precise enough.
> >>
> >> The bool type will cancel type_with_alignment<> effects (at least on
> >> Intel compatible platforms); i.e. unique alignment of each
> >> optional<T> type.
> >
> > Sounds like you want
> >
> >    type_with_alignment<T>::type storage;
> >    new ((void*)&storage) T(x, y, z)
> >
> > Can you really do anything to make this cleaner?  I guess:
> >
> >     aligned_storage<T> storage;
> >     new (storage.bytes) T(x, y, z);
> >
> > might be a help.  What else are you gaining?  And how do you destroy
> > the T?  If not explicitly and you don't have a "constructed" flag,
> > you're going to have exception-safety problems.
>
> Everything seems already defined ;)
>
> Given the fact optional<>::m_storage is aligned like a bool...:
>
It is not aligned like a bool...

> - 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?

> - 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 ?


--
Fernando Cacciola



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

Reply via email to