///////////////////////// test.d /////////////////////////
// Call alias with a parameter.
void callAlias(alias f)()
{
    f(42);
}

alias Identity(alias X) = X;

void main()
{
    int local;

    // Declare an anonymous function template
    // which writes to a local.
    alias a = Identity!((i) { local = i; });

    // Declare a function template which does
    // the same thing.
    void b(T)(T i) { local = i; }

    callAlias!a; // Works
    callAlias!b; // Error: function test.main.b!int.b is a
                 // nested function and cannot be accessed
                 // from test.callAlias!(b).callAlias
}
//////////////////////////////////////////////////////////

Is this a bug or some sort of limitation? As far as I can tell, a and b are essentially the same, except one is anonymous.

Reply via email to