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