On 25/09/2012 06:07, Rob T wrote:
This is a little insane, but it works.

int Recurse(int a)
{
    if (a <= 1)
       return 1;
    else
    // can we replace explicit call to "Recurse"
    // with "self" using a mixin or some other means?
    //   return a * Recurse(a - 1);
       mixin("return a * mixin(__traits(identifier, __traits(parent,
{})))(a - 1);");
}

enum string self = q{__traits(parent, {})};

int recurse(int a)
{
   if (a <= 1)
      return 1;
   else
      return a * mixin(self)(a - 1);
}

Reply via email to