Coming back, Unique, opDot and whatever else

Jacob Carlborg doob at me.com
Sat Jan 18 04:40:36 PST 2014


On 2014-01-18 13:07, Stanislav Blinov wrote:

> That's the approach I took. I've moved both _Transfer and _Clear into
> module scope and renamed them. And indeed, the compiler prefers
> opDispatch(). But not if I call them like .clearUnique(this) :)

Right, I was mostly thinking of public methods, but those are private.

> So the only public method collision that's possible right now is
> release(), but there's nothing that can be done about it. If I move it
> outside too, compiler would want to call wrong method is encapsulated
> type declares its own release().
>
>> Does opDot even work?
>
> Yes, but I ditched it too already :)
>
> I've also added some more operations, like casts for class types, null
> assignment, and an operator to squeeze the value from the Unique back
> into normal type land (discarding "uniqueness", of course). But I feel
> kind of uncomfortable having it like an operator, even though this looks
> sort of sensible:
>
> Widget a;
> Unique!Widget u;
> //...
> a << u; // after that a holds the value and u is null
>
> Maybe this would be better off as another method. What do you think?

Absolutely. We don't want operator overload abuse.

> That's how it all looks currently: http://codepad.org/21vejNKK

Now with tests :)

-- 
/Jacob Carlborg


More information about the Digitalmars-d-announce mailing list