On 12/09/2012 10:43 PM, js.mdnq wrote:

> I thought `alias this` essentially treats the object as the alias.
>
> struct A {
> alias value this;
> int value;
> void func();
> }
>
> A a;
>
> then a is essentially the same as a.value?

No. 'alias value this' means "when this object is used in a context where the type of 'value' is expected, then use the 'value' member instead."

In your example above, it means "when A is used in place of int, use 'value' instead." It is basically for automatic type conversion.

(A reminder: Although the language spec allows multiple alias this declarations, current dmd supports only one.)

> a.func() would be
> a.value.func() which makes no sense?

a.func() would still call A.func on object 'a' because 'a' is an A. Only when 'a' is used as an int, 'value' is considered.

> At least that is how I thought
> alias this worked? (it's obviously more complex than what I thought)

Perhaps it is simpler than what you thought. :)

> (I'm new to D so you'll have to forgive all the stupid questions ;)

Your questions make all of us learn more. :)

> D seems quite powerful and many useful ways to do things but I still
> haven't wrapped my head around all the intricacies)

Indeed... There are a lot of features.

Ali

Reply via email to