[Issue 19871] Copy constructor rejects valid code if default construction is disabled

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue May 14 18:46:11 UTC 2019


https://issues.dlang.org/show_bug.cgi?id=19871

--- Comment #5 from RazvanN <razvan.nitu1305 at gmail.com> ---
(In reply to Atila Neves from comment #4)
> I disagree wholeheartedly that it should be the correct behaviour. I'm
> pasting the same comment again here so it doesn't get lost.
> 
> I missed this discussion originally. The reason one one wants to have:
> 
> ```d
> struct Foo {
>     this(ref Foo);
>     this(Foo);
> }
> ```
> 
> is simple: C++ interop. I made it so that the dpp translations actually
> enabled D code to call a C++ move constructor by overloading on this.
> 
> More importantly, D should be able to do what C++ does without needing
> rvalue references. So the equivalent of this should be possible:
> 
> 
> -----------------------
> struct Foo {
>     Foo(const Foo& foo); // copy ctor
>     Foo(Foo&& foo); // move ctor
> };
> -----------------------
> 
> As you can imagine, any and all types that have been updated post C++11 that
> had copy constructors now have move constructors. Which I'd declare in D
> how, exactly?

Well, I think that the idea is that opPostMove (DIP1014) would be the solution.

--


More information about the Digitalmars-d-bugs mailing list