Hello simendsjo,

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?


Just guessing but I'd guess that acts much like C++'s ref:

int*& Fn() { ... } // return a reference to a pointer to an int.

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

Return a reference to an int (that is also pointed to by a local variable) who's value is 10

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

Return the value (10) of an int that is pointed to by a local variable.

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

The main point of references is that they can be lvalues.

assert(retvalue == 99);
}
--
... <IXOYE><



Reply via email to