On Monday, 24 December 2012 at 19:09:35 UTC, Jonathan M Davis wrote:
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...

- Jonathan M Davis

well, if the function took by value, and returned by ref, then it would be just plain *wrong*, no conditions, so that did not even cross my mind.

I *thought* min took by ref, and returned by value, hence my confusion to the example. I'm legitimatly surprised to learn that it works that way, specifically because I've learned to NEVER return by ref an input argument exactly because of this...

Side question, is this legal?

"int a = min(min(1,2), min(3,4));"

How long do those temps last? I like this piece of code, because the previous had that fishy "const int&", which raises eyebrows, but I think this example could blindsind even the most careful programmer.

EDIT: In this specific example, those might be statics, so the code would be legal, but what if we replace those ints with "foo()"s ?

Reply via email to