After further review, I now realize that the right way (for me) to do this is 
to add a .dup property. So instead of 

S foo(const S s) {
    S other;
    other = s;
}

or

S foo(const S s) {
    S other = S(s);
    return other;
}

which didn't look right to me, I can write

S foo(const S s) {
    S other = s.dup;
    return other;
}

which is ultimately an equivalent operation.

Thanks again, everyone for taking the time to explain what was going on.

Paul

It just looks better to me.





Paul D. Anderson Wrote:

> bearophile Wrote:
> 
> > The idea now is to find a way to encapsulate that manual copying & dupping 
> > into some overloaded operator of S. But I have failed so far. Operator 
> > overloading in D2 is not an easy thing, it needs training. (That's why I 
> > have recently asked for the compiler to be strict to avoid wrong usages of 
> > the operator overloading.)
> > 
> > Bye,
> > bearophile
> 
> 
> So I understand better now, thanks, what is wrong. I'm a little disappointed 
> that there is apparently no way to implement case 4 for any struct with a 
> reference.
> 
> Paul

Reply via email to