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