Thread overview
Scope of lambdas and closures
Jul 17, 2011
Rolv Seehuus
Jul 17, 2011
Daniel Murphy
Jul 19, 2011
Rolv Seehuus
Jul 20, 2011
Daniel Murphy
Jul 30, 2011
Rolv Seehuus
Jul 30, 2011
Rolv Seehuus
July 17, 2011
Hi all,

First post - I'm learning D, 10yrs exp. with C++.

While trying to generate a static table of functions using lambdas compile time using mixins, I ran in to this little (for me) conundrum.

Given that we have this function available:
static void foo(){
    writefln("Hohum");
}

This compiles:
void function()[] funcext = [&foo];

Whereas this does not:
void function()[] funcext2 = [function(){foo();}];

Why? What are the technicalities that prevent me from setting up a lambda during compile-time? It seems to me that the compiler should be able to figure this out.

Any insights appreciated. :)

Cheers,
-r-
July 17, 2011
That would be http://d.puremagic.com/issues/show_bug.cgi?id=2634

"Rolv Seehuus" <rolv.seehuus@gmail.com> wrote in message news:ivug6b$o7o$1@digitalmars.com...
> Hi all,
>
> First post - I'm learning D, 10yrs exp. with C++.
>
> While trying to generate a static table of functions using lambdas compile
> time using mixins, I ran in to
> this little (for me) conundrum.
>
> Given that we have this function available:
> static void foo(){
>    writefln("Hohum");
> }
>
> This compiles:
> void function()[] funcext = [&foo];
>
> Whereas this does not:
> void function()[] funcext2 = [function(){foo();}];
>
> Why? What are the technicalities that prevent me from setting up a lambda
> during compile-time? It
> seems to me that the compiler should be able to figure this out.
>
> Any insights appreciated. :)
>
> Cheers,
> -r-


July 19, 2011
== Quote from Daniel Murphy (yebblies@nospamgmail.com)'s article
> That would be http://d.puremagic.com/issues/show_bug.cgi?id=2634

Thanks,

Is there a related/same reason why this don't compile?

unittest {
  static void stuff(){}
  static void function()[string] functions = [ "stuff":&stuff ];
}

Cheers,
-r-
July 20, 2011
"Rolv Seehuus" <rolv.seehuus@gmail.com> wrote in message news:j04qff$i4s$1@digitalmars.com...
> Is there a related/same reason why this don't compile?
>
> unittest {
>  static void stuff(){}
>  static void function()[string] functions = [ "stuff":&stuff ];
> }

That compiles for me.


July 30, 2011
== Quote from Daniel Murphy (yebblies@nospamgmail.com)'s article
> "Rolv Seehuus" <rolv.seehuus@gmail.com> wrote in message news:j04qff$i4s$1@digitalmars.com...
> > Is there a related/same reason why this don't compile?
> >
> > unittest {
> >  static void stuff(){}
> >  static void function()[string] functions = [ "stuff":&stuff ];
> > }
> That compiles for me.

Ok - Compiler version/os? I'm on MacOS, compiler outputs the following: DMD32 D Compiler v2.054

-r-


July 30, 2011
== Quote from Rolv Seehuus (rolv.seehuus@gmail.com)'s article
> == Quote from Daniel Murphy (yebblies@nospamgmail.com)'s article
> > "Rolv Seehuus" <rolv.seehuus@gmail.com> wrote in message news:j04qff$i4s$1@digitalmars.com...
> > > Is there a related/same reason why this don't compile?
> > >
> > > unittest {
> > >  static void stuff(){}
> > >  static void function()[string] functions = [ "stuff":&stuff ];
> > > }
> > That compiles for me.

Doh, never mind.
Sorry for wasting your time.

Cheers,
-r-