DIP 1018--The Copy Constructor--Community Review Round 1

Dru Dru at notreal.com
Sat Dec 22 23:26:47 UTC 2018


First I want to say that I hope it gets implemented
Semantic consistency demands it:

B b;
A a = b; //calls this(B) or this(ref B)
A a2 = a; //*should* call this(ref A)


I have a few points:

1) "ref" vs "ref const" dilemma

The user can overload different kinds of copy ctors,
but what is the *default* copy ctor ?
I think the default copy ctor should be "ref const"
- "ref const" is safer and fits most cases
- "ref" has priority over "ref const" so the user can simply 
overload
and his "ref" ctor will be used instead of the default


2) "Generating copy constructors"

Should the user care when a constructor is "generated" if 
semantics are consistent ?
May just say there is *always* a default copy ctor that can be 
overriden by the user.
The implementation of default ctor can change and use memcpy as 
needed.


3) Not very related but maybe also needs a fix:
I noticed that init to rvalue of a different type is weird right 
now
A a1 = b; //calls this(ref B)
A a2 = B(); //does not call this(ref B)







More information about the Digitalmars-d mailing list