Non-global template cannot use local lambda

Ali Çehreli acehreli at yahoo.com
Sun Jul 22 19:08:49 PDT 2012


On 07/22/2012 06:08 PM, Jonathan M Davis wrote:
 > On Sunday, July 22, 2012 17:40:36 Ali Çehreli wrote:
 >> I can't see why the following limitation:
 >>
 >> class C
 >> {
 >>       void foo(alias Func)()
 >>       {}
 >> }
 >>
 >> void main()
 >> {
 >>       auto c = new C();
 >>       c.foo!(x =>  x)();  //<-- Compilation error
 >> }
 >>
 >> Error: template instance foo!(__lambda2) cannot use local
 >> '__lambda2(__T1)' as parameter to non-global template foo(alias Func)
 >>
 >> Is this a bug?
 >
 > I'd say that it's a bug . If it's not, it definitely should  be an 
enhancement.
 >
 > - Jonathan M Davis

Thanks and sorry for the noise. I should have checked bugzilla first:

   http://d.puremagic.com/issues/show_bug.cgi?id=3051

   http://d.puremagic.com/issues/show_bug.cgi?id=3052

This one is opened by David Simcha when implementing std.parallelism:

   http://d.puremagic.com/issues/show_bug.cgi?id=5710

Then I guess my examples used to work due to dmd bugs that must have 
gotten fixed during the short lambda syntax implementation.

Ali



More information about the Digitalmars-d-learn mailing list