Error: cannot implicitly convert expression (this) of type const(S) to S

Steven Schveighoffer schveiguy at yahoo.com
Mon Sep 20 04:11:05 PDT 2010


On Sat, 18 Sep 2010 17:20:31 -0400, Jonathan M Davis <jmdavisProg at gmx.com>  
wrote:

> On Saturday 18 September 2010 09:58:15 Steven Schveighoffer wrote:

>> In reality, you cannot make save const, unless you want to do a deep  
>> copy
>> (but I recommend against that, save should be a quick operation).
>
> Well, I was trying to make a deep copy (that's what it does if it  
> doesn't have
> an array in it anyway). I suppose whether it really needs to be const or  
> not
> depends on what you're trying to do with it. I'm definitely trying to  
> create a
> range here, and if save() is supposed to make a copy of the range,  
> whether that
> needs to be a shallow copy or a deep copy depends on what the  
> std.algorithm stuff
> does with it. When I think copy, I usually think deep copy, but that's  
> not
> necessarily the case. I will have to enquire as to the intent of save().  
> For
> value types, shallow copy and deep copy are the same, so it's not an  
> issue. But
> for class ranges or struct ranges with references, it does become an  
> issue.

You don't want a deep copy of a range.  All you want to copy is the  
iteration state, not the data.

save is definitely supposed to be shallow.  I.e. you should copy the range  
itself, not what the range points to.

-Steve


More information about the Digitalmars-d-learn mailing list