Eigenpoll : D wish list : L-Value return 

To make user-defined types (and properties of classes) first class citizens with respect to builtin types (and data members of classes), one needs to be able to return an L-value.

This wish list item would go together with the other wish list items that deal with improved support for value-types: "stack classes"/"struct inheritance, ctors"/"auto members".


Example 1:

A property of a class cannot have the ++ operator acted upon (because a function cannot return an L-value). The code


class A
{
int a();
}

A object_of_type_A;
object_of_type_A.a++;


doesn't work, because there is no way in D for a user defined property to return a reference to an int.


Example 2:

User defined value-types (primitives like vectors, matrices, colors, quaternions, planes, lines, points, etc..) cannot made to behave exactly like builtin types, because some operations need to return an L-Value:


int a;
(+a) = 3;


The above is possible for an int, but not for a user defined struct/class.

















Report this item for cleanup