24-May-2013 22:13, Jonathan M Davis пишет:
On Friday, May 24, 2013 17:42:59 Dmitry Olshansky wrote:
There was a pull that allowed to separate qualifier of instance from
reference (handle) looking like this:

ref const(Object) refToConst;

ref Object mutableTlsRef;
Object mutableTlsRef; //same as above

ref const Object constRefToConst;
const Object constRefToConst; //ditto

The fact that we don't have it is part of the reason I don't like doing
OOP in D at all.

Lacking a proper language solution, we could create something similar to
Rebindable but for shared.


Then in my vision built-in OOP has failed if we need at least 2 wrapper types implemented as structs on top of built-in refs. Then recall (to be implemented) RefCounted!ClassType and we have yet another library land solution to make OOP types with ref-counting.

On occasion I've been enumerating the amount of special casing class references require and truth be told I fail to see the benefit of having them as built-in outweigh the cost. With multiple alias this I could have implemented the OOP in library just fine as Ref!T struct. Then
Ref!(const(T)) is ConstRef!T
Ref!(shared(T)) is SharedRef!T

And now UDAs can serve for override/virtual, inheritance etc.
- Jonathan M Davis


--
Dmitry Olshansky

Reply via email to