On Saturday, 5 January 2013 at 18:38:31 UTC, Mehrdad wrote:
On Saturday, 5 January 2013 at 12:58:49 UTC, js.mdnq wrote:
You are saying because "visually" foo(S(2)) leaves the "scope"
it is different than the others.
No, he is saying so because the LANGUAGE (and I don't mean the
_compiler_) defines what "scope" means, and it also defines
when anything enters/leaves some scope.
It also defines the lifetimes of variables, and for structs,
that's bounded to their scope.
Your perception of what *COULD* have been an alternate
definition (or implementation) has zero bearing on anything,
because that's not what it means in D, period.
Oh please, 90% of the discussions on here are about what d is
doing, should do, and will do, period!
The discussion came about because a change in the
compiler/language and regardless of how you want to spin it, D's
language specification is not set in stone and is not implemented
perfectly in the compiler... and even if it were, it doesn't then
mean that it does it the best way.