[Issue 19872] Copy constructor: Order of declaration yields different results with rvalue constructor

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue May 14 16:04:55 UTC 2019


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

--- Comment #3 from Atila Neves <atila.neves at gmail.com> ---
I added a comment in the discussion but will add it here as well:

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, so...

--


More information about the Digitalmars-d-bugs mailing list