...Although, I should add that my analogy between methods and free functions seems to break when the object is an rvalue. Like in:

struct T
{
    int v;

    this(int a)
    {
        v = a;
    }

    int get()
    {
        return v;
    }
}

int v = T(4).get();

Given my analogy, the method get() should be able to be thought of as a free function:

int gget(ref T obj)
{
    return obj.v;
}

But then the above method call should be able to thought of as:

int v = gget(T(4));

...which won't compile because T(4) is an rvalue, and according to D, rvalues can't be passed as ref (nor const ref). I don't know which one is flawed, my analogy, or the logic of how D is designed.

Reply via email to