Assigning value to a lazy parameter in a function call
    Vidar Wahlberg 
    canidae at exent.net
       
    Fri May 11 13:45:38 PDT 2012
    
    
  
Wasn't easy to find a short good description of the issue in the 
subject, but here's some code to illustrate my "concern":
---
import std.stdio;
void log(T...)(lazy string message, lazy T t) {
         debug writefln(message, t);
}
void main() {
         int a = 42;
         writefln("The meaning of life is %s", a);
         log("Incrementing the meaning of life: %s", ++a);
         writefln("The meaning of life is now %s", a);
}
---
I often call functions where one of the parameters may be an integer 
which i post/pre increment/decrement. However, that can be quite risky 
if the parameter is defined as "lazy" as shown above.
The value of "a" above after calling "log" depends on whether you've 
compiled with "-debug" or not, this may not be very obvious and may take 
some by surprise.
Perhaps the compiler should print out a warning when you're assigning a 
value to a lazy parameter in a function call?
    
    
More information about the Digitalmars-d-learn
mailing list