What's the order of argument evaluation for functions
Steven Schveighoffer
schveiguy at yahoo.com
Wed Apr 27 13:37:40 PDT 2011
On Wed, 27 Apr 2011 16:22:45 -0400, Jens Mueller <jens.k.mueller at gmx.de>
wrote:
> Hi,
>
> on page 50 TDPL states
> "All arguments are evaluated left to right before fun gets invoked."
> That means
> int i;
> writeln(++i, ++i);
> is supposed to print
> "12".
> and is valid.
> But on http://www.digitalmars.com/d/2.0/expression.html
> func(++i, ++i);
> is defined as an error.
> Is the evaluation order for function calls undefined or it is left to
> right?
Both :)
The answer is, the current spec says it is an error. However, TDPL is
usually considered to be what the spec *will* be when D2 is completed. So
expect the left to right evaluation in the future. It's likely that the
compiler doesn't currently conform to TDPL.
-Steve
More information about the Digitalmars-d
mailing list