Is this correct behavyor? (template tuples)

BCS BCS at pathlink.com
Tue Dec 12 10:55:09 PST 2006


Given a template like this:

template foo(V...)
{
   void foo()
   {
     foreach(i,V)
     {
       // "i" is not a const
     }
   }
}

use like this:

foo!(1,2,3,4,5)();

Inside the foreach "i" can't be used as a constant in some cases. The 
work around I have used is to index into V.

template foo(V...)
{
   void foo()
   {
     foreach(i,j,V)
     {
       const int k = V[i];
       // "i" is not a const
     }
   }
}

However this causes DMD to actually copy the values onto the stack (I 
took a look at the disassembly). This even happens with optimization on. 
(This /might/ be considered a bug in and of it's self.)


I'm not sure if either of these is actually a bug, so I'm hoping someone 
else will take a think on them.


More information about the Digitalmars-d-bugs mailing list