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
> 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