On 24/06/2010 13:52, Simen kjaeraas wrote:
struct Ref( T ) {
T* payload;
@property ref T getThis( ) {
return *payload;
}
@property ref T getThis( ref T value ) {
payload = &value;
return *payload;
}
alias getThis this;
}

void bar( ) {
Ref!int f;
int n;
f = n;
int b = f;
}

This code fails on the line 'int b = f;'. Is it supposed to?


I think so.

'alias this' is used to forward stuff that appears to the right of a dot onto the named member.

In c++ to get what you are doing to work, you'd add a customer cast operator:

http://www.digitalmars.com/d/2.0/operatoroverloading.html#Cast

but I'm not sure how the cast operator overloading works in D, I don't know if it will try to implicitly cast and call your operator.

--
My enormous talent is exceeded only by my outrageous laziness.
http://www.ssTk.co.uk

Reply via email to