newCTFE Status November 2017

Stefan Koch uplink.coder at googlemail.com
Sat Nov 18 13:54:45 UTC 2017


Hi Guys,

I know there has been a lack of visible activity lately in the 
field of newCTFE.

But fear not, there is progress; even if it is much slower then 
before.

I just implemented support for varadic function templates.

(which produces a curious AST in which you have more arguments 
then parameters ;))

luckily this was easily fixed because dmd provides a way to 
iterate over the expanded parameter tuple. The elusively named 
(Parameter.getNth) function.

which looks like this:

     /***************************************
      * Get nth Parameter, folding in tuples.
      * Returns:
      *      Parameter*      nth Parameter
      *      NULL            not found, *pn gets incremented by 
the number
      *                      of Parameters
      */
     static Parameter getNth(Parameters* parameters, size_t nth, 
size_t* pn = null)
     {
         Parameter param;

         int getNthParamDg(size_t n, Parameter p)
         {
             if (n == nth)
             {
                 param = p;
                 return 1;
             }
             return 0;
         }

         int res = _foreach(parameters, &getNthParamDg);
         return res ? param : null;
     }

Notice how pn is never actually touched!
and therefore will not get incremented.


More information about the Digitalmars-d mailing list