Subject: Re: [boost] [type-traits] aligned_storage in unions
From: OvermindDL1 (overminddl1_at_[hidden])
Date: 2010-09-17 14:31:59
On Fri, Sep 17, 2010 at 9:46 AM, <dherring_at_[hidden]> wrote:
> On Fri, 17 Sep 2010, Frank Mori Hess wrote:
>> On Friday 17 September 2010, dherring_at_[hidden] wrote:
>>> The "standard" workaround is to allocate your own memory and use manual
>>> type casting. Â Boost::aligned_storage can be used to maintain proper
>>> alignment, but it cannot be placed inside a union due to the default
>>> dtor, and noncopyable functions. Â Thus I am forced to use part of
>>> - Is there a better way to do this?
>> What about using boost.variant instead?
> It doesn't satisfy my need for everything to be in-place (e.g. for seamless
> use with shared memory, memory pools, etc.). Â [Note: we don't actually use
> std::string; it was just convenient for the example.]
How is it not in-place?
If C++ supported unions containing anything, then
boost::variant<int,std::string,myClass> would be identical in layout
Which all use the same memory.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk