Subject: Re: [boost] [string] proposal
From: Dean Michael Berris (mikhailberis_at_[hidden])
Date: 2011-01-23 21:08:26
On Sat, Jan 22, 2011 at 3:56 AM, Dave Abrahams <dave_at_[hidden]> wrote:
> At Sat, 22 Jan 2011 03:40:44 +0800,
> Dean Michael Berris wrote:
>> On Sat, Jan 22, 2011 at 3:18 AM, Dave Abrahams <dave_at_[hidden]> wrote:
>> > At Sat, 22 Jan 2011 01:56:36 +0800,
>> > Dean Michael Berris wrote:
>> >> No changing arbitrary content in the string. Concatenation is a
>> >> process of creating new strings.
>> > But you're allowing assignment. Â That's not acting "as if it's const,
>> > with no way to modify the string"
>> Unless you frame assignment in terms of a "move".
>> Â x = "This is the original";
>> Â x = "Not anymore";
>> What's happening here is that you're really making x refer to a
>> different string. In essence, x is what you might call a proxy. You
>> can change what the proxy refers to, but what it refers to you cannot
>> change -- if that makes any sense. If you're reading or dealing with
>> x, basically you're dealing with the proxy.
> Sorry, no, that's not value semantics. Â Value semantics are a subset
> of Stepanov's "Regular Type" concept. Â See EOP.
So in the above, 'x' is assignable, copyable, and equality-comparable.
It can enforce an ordering (total or partial) and it can be default
constructed. I don't see why it doesn't support the "regular type" nor
the value semantics "protocol".
> Let me be clear: when you assign into x, you are modifying its value.
> If that can happen when x is const, x doesn't have proper value
> semantics. Â Implementation details like underlying buffers and
> refcounting are irrelevant.
Agreed. So it would be ill-formed to do something like this:
boost::string const x("This is the initial value");
x = "Another value"; // compile error, X const doesn't have an
I didn't meant to imply that a `boost::string const` should be
assignable -- I was mostly thinking about the case where it is a
non-const lvalue. In which case I don't see why a proxy object
wouldn't qualify for being something that follows the value semantics
-- Dean Michael Berris about.me/deanberris
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk