Thread overview | |||||
---|---|---|---|---|---|
|
July 23, 2012 Non-global template cannot use local lambda | ||||
---|---|---|---|---|
| ||||
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've noticed this problem in some of my online examples. The following line doesn't work with 2.059, where map() below is std.parallelism.TaskPool.map(): auto results = map!(a => a.averageGrade)(students); Ali |
July 23, 2012 Re: Non-global template cannot use local lambda | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli | 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
|
July 23, 2012 Re: Non-global template cannot use local lambda | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jonathan M Davis | 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 |
Copyright © 1999-2021 by the D Language Foundation