Copy Constructor DIP

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Thu Jul 12 13:45:30 UTC 2018


On 07/11/2018 11:11 AM, Atila Neves wrote:
> On Wednesday, 11 July 2018 at 07:40:32 UTC, RazvanN wrote:
>>> But there's a super explicit `@implicit` thing written right there... 
>>> so should we expect that an *explicit* call to the copy constructor 
>>> is not allowed? Or maybe it is allowed and `@implicit` is a lie?
>>
>> The @implicit is there to point out that you cannot call that method
>> explicitly; it gets called for you implicitly when you construct an 
>> object
>> as a copy of another object.
> 
> How is this different from other types of constructors or destructors?

The main difference is that the compiler may insert calls to it implicitly.

> I also very much dislike the syntax - it makes no sense to me at all. I 
> commented on the PR itself asking why it differs so much from C++ - 
> specifically, what's bad about the C++ way of doing things there that we 
> want to avoid?

C++ is at the other end of the spectrum - constructors are too implicit, 
so the "explicit" keyword has been introduced with the advice to use it 
in the vast majority of cases. If C++ could do it again, it would make 
everything explicit and add an "implicit" keyword.


More information about the Digitalmars-d mailing list