[Issue 1245] New: static foreach shouldn't define new scope and	introduce new variables
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Wed May 23 13:38:00 PDT 2007
    
    
  
http://d.puremagic.com/issues/show_bug.cgi?id=1245
           Summary: static foreach shouldn't define new scope and introduce
                    new variables
           Product: D
           Version: 1.014
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla at digitalmars.com
        ReportedBy: baryluk at mpi.int.pl
import std.stdio;
void Code(x...)() {
        foreach (i, xi; x) {
                static if (xi != 0) { // dosn't works, see below
              //static if (x[i] != 0) { // workaround
                        writefln(xi);
                }
        }
}
void main() {
        alias Code!(1, 6, 0, 2, 5) c;
        c();
}
// staticforeachif.d(5): Error: expression xi != 0 is not constant 
// or does not evaluate to a bool
with workaround, it works, and display:
1
6
2
5
as needed
Imho foreach over tupple shouldn't introduce new scope and variables xi,
but as static if be in the same scope (if needed you always can add { .. }
and xi (second parameter in foreach), should be actually alias to x[i]
I'm using this in optimalisation of general code generators.
-- 
    
    
More information about the Digitalmars-d-bugs
mailing list