Boost logo

Boost :

Subject: Re: [boost] [type-traits] aligned_storage in unions
From: OvermindDL1 (overminddl1_at_[hidden])
Date: 2010-09-17 15:18:38


On Fri, Sep 17, 2010 at 1:12 PM, Steven Watanabe <watanabesj_at_[hidden]> wrote:
> AMDG
>
> OvermindDL1 wrote:
>>
>> On Fri, Sep 17, 2010 at 9:46 AM,  <dherring_at_[hidden]> wrote:
>>
>>>
>>> On Fri, 17 Sep 2010, Frank Mori Hess wrote:
>>>
>>>>
>>>> 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
>> to:
>> struct {
>>    uint which;
>>    union {
>>        int i;
>>        std::string s;
>>        myClass m;
>>    }
>> }
>> Which all use the same memory.
>
> boost::variant can use the heap in some cases,
> to preserve exception safety.

And when using recursive structures that do not manage their own recursiveness.


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