From: David Abrahams (dave_at_[hidden])
Date: 2003-10-08 21:03:43
"E. Gladyshev" <egladysh_at_[hidden]> writes:
> --- David Abrahams <dave_at_[hidden]> wrote:
>> variant<std::vector<int>, std::string> v("hello");
>> v = std::vector<int>(3);
>> First you destroy the contained string, then you try to construct the
>> vector and it throws. The invariant says you have to contain either
>> a vector or a string, but you can't get the string back; it's likely
>> to throw on construction too.
>> The only way to maintain the basic guarantee in this case, with this
>> invariant, is to construct the vector, somewhere else, before
>> destroying the string... which means on the heap or in duplicate space
>> in the variant itself.
> Could it be done on the stack and not on heap or duplicate space?
> I think that I can outline a solution about how to do it
> w/o heap or duplicate space.
You are a genius. Please elaborate.
-- Dave Abrahams Boost Consulting www.boost-consulting.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk