Boost logo

Boost :

Subject: Re: [boost] [variant] Please vote for behavior
From: Dave Abrahams (dave_at_[hidden])
Date: 2013-01-25 19:00:43


on Fri Jan 25 2013, Krzysztof Czainski <1czajnik-AT-gmail.com> wrote:

> 2013/1/25 Gottlob Frege <gottlobfrege_at_[hidden]>
>
>> On Fri, Jan 25, 2013 at 10:21 AM, Dave Abrahams <dave_at_[hidden]> wrote:
>>
>> > >>
>> > > Isn't leaving the class with it's invariants broken simply a defect?
>> >
>> > Yes. IIUC the question here is whether the invariant of variant [;-)]
>> > shall be weakened to accommodate efficient move semantics, thereby
>> > breaking some code, or not, at some cost (the specific costs to be
>> > incurred by various strategies presently under discussion).
>> >
>> > But I have to admit, I haven't been reading the thread all that
>> > carefully, so I could be mis-understanding completely.
>> >
>> >
>> >
>>
>> Instead of weakened, which is one option discussed, I would also
>> characterize much of the discussion as "let's ignore that the invariant is
>> broken, because no one should rely on invariants after move".
>>
>> If you had opinions on that aspect, you might want to weigh in. It would be
>> appreciated.
>>
>> Tony
>
> I think variant after move is like int without initialization:
> int i;
> cout << i; // don't do this
> If the fact, that moved-from objects are only good for destruction or
> assignment-to is accepted, then invariants for moved-from objects are
> allowed to be violated.

Then you propose to weaken the invariant of variant and as a
side-effect, break some existing code. That's fine, as long as you
appreciate the consequences of that approach.

-- 
Dave Abrahams
BoostPro Computing                  Software Development        Training
http://www.boostpro.com             Clang/LLVM/EDG Compilers  C++  Boost

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