structs are now lvalues - what is with "auto ref"?
Jonathan M Davis
jmdavisProg at gmx.com
Mon Dec 24 11:08:41 PST 2012
On Monday, December 24, 2012 20:03:24 monarch_dodra wrote:
> Hum... Indeed, it takes by ref *and* returns by ref. Passing in
> to out a const ref is *the* smoking gun. Working with D has
> gotten me used to functions that take by value and return by
> value...
>
> Snap. You got me.
It wouldn't matter if the function accepted its argument by value. You'd still
be returning a reference to a variable that doesn't exist anymore. If
anything, it would be _worse_ if it took it by value, since the variable
definitely doesn't exist anymore once the function returns in that case,
whereas with a reference, it will continue to exist for the duration of the
statement that the call was made in (and beyond that, if the argument was
actually an lvalue - in fact with an lvalue, the code would work as unsafe is
it may be). So, it's the returning by reference that's the problem, not
passing by reference.
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list