The spec is very short here, and the example doesn't give me much..

// I thought "allows functinos to return by reference" meant it could return local variables..
ref int* ptr() {
        auto p = new int;
        *p = 12;
        return p; // Error: escaping local variable
}

// So whats the difference between these functions?

ref int val() {
        auto p = new int;
        assert(*p == 0);
        *p = 10;
        assert(*p == 10);
        return *p;
}

int val2() {
        auto p = new int;
        *p = 10;
        return *p;
}

unittest
{
        assert(val() == 10);
        assert(val2() == 10);
        auto retvalue = val() = 99; // References can be lvalues.. What?
        assert(retvalue == 99);
}

Reply via email to