[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