On 02/02/16 2:21 AM, Shachar Shemesh wrote:
Hi all,

I have a non-copyable struct with move semantics. In other words, a
struct with @disable this(this), but with working overloads for the
this(copy) and opAssign.

Now I have an instance of that struct. I would like to be able to
voluntarily give up ownership for the sake of another instance.

In C++, I would do something like this:

unique_ptr<int> p (new int), q;

q = std::move(p);

I am unsure what is the correct way to do this under D.

Shachar

So just to confirm, you want to explicitly copy a struct but not "implicitly" copy it?

struct Foo {
        @disable
        this(this);
        
        int x;
        
        Foo dup() {
                return Foo(x);  
        }
}

void main() {
        Foo a, b;
        a = Foo(7);
        b = a.dup;
        
        // will error
        // b = a;
}

Please note for this example code I have implemented dup, you wouldn't normally need to do that for structs.

Also D.learn is correct place to ask this. No the general N.G.

Reply via email to