
On Fri, Sep 17, 2010 at 1:12 PM, Steven Watanabe <watanabesj@gmail.com> wrote:
AMDG
OvermindDL1 wrote:
On Fri, Sep 17, 2010 at 9:46 AM, <dherring@ll.mit.edu> 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.