Copy constructors for lazy initialization

Jonathan M Davis jmdavisProg at gmail.com
Fri May 28 19:16:00 PDT 2010


bearophile wrote:

> Andrei Alexandrescu Wrote:
> 
>> this(ref S src);
>> this(this);
> 
>> What do you think?
> 
> In this moment I am too much sleepy to understand the semantics of what
> you say.
> 
> But I can say something about syntax: that this(this) syntax is bad, it's
> cryptic, I prefer something that uses/contains some English word/name that
> I read and reminds me of what it does.
> 
> The this(ref S src) syntax makes things even worse in this regard. Please
> don't turn D into a puzzle language (note that I am not saying your
> feature is bad, far from it, I am just saying that the syntax you have
> proposed is very far from being easy to understand from the way it is
> written).
> 
> Regardless of what Don has said, here I'd probably like something like a
> readable @attribute to replace this(this) :-)
> 
> Bye,
> bearophile

Well, as long as S is the name of the struct, it's essentially what's done 
in C++ all the time. So, we get

S(ref S src)

instead of

S(const S& src)


The weird thing here is that you're actually altering the parameter that you 
passed in, which is normally a major no-no with copy constructors.

- Jonathan M Davis


More information about the Digitalmars-d mailing list