On 2011-02-01 10:12:44 +0100, Magnus Lie Hetland said:

On 2011-01-31 19:46:53 +0100, Simen kjaeraas said:

Magnus Lie Hetland <mag...@hetland.org> wrote:

Hm. Using code quite similar to you, supplying a lambda in the second aliasing, I get this error:

something.d(93): Error: template instance cannot use local '__dgliteral2(__T3)' as parameter to non-global template optArg(alias fun)
[snip]

This is a bug. Please report it.

Ah -- OK. Will do.

Hm. Just to make sure this *is* a bug, and I'm not just being a dumbass ... this is a tiny program that illustrates the problem (i.e., gives the error above). Perhaps the use of a local function here really is prohibited...?

template A(int op) {
   template A(alias fun) {
       auto A(T)(T x) {
           return 0;
       }
   }
}
alias A!0 B;
int gun() {
   return 0;
}
void main() {
   int fun() {return 0;}
   // alias B!((){return 0;}) C; // Won't compile
   // alias B!(fun) C;           // Won't compile
   alias B!(gun) C;              // Works
}

--
Magnus Lie Hetland
http://hetland.org

Reply via email to