Can't call nested template function unless it's anonymous?
    Vladimir Panteleev via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Wed Nov  4 17:48:45 PST 2015
    
    
  
///////////////////////// 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.
    
    
More information about the Digitalmars-d-learn
mailing list