A comparison between C++ and D
John Colvin via Digitalmars-d
digitalmars-d at puremagic.com
Wed Mar 9 16:31:00 PST 2016
On Wednesday, 9 March 2016 at 20:14:13 UTC, Adam D. Ruppe wrote:
> ---
> import std.stdio;
>
> @nogc int delegate(int) dg;
>
> int helper() @nogc {
> int a = 50;
>
> struct MyFunctor {
> int a;
>
> @nogc this(int a) { this.a = a; }
>
> // the function itself
> @nogc int opCall(int b) { return a+b; }
> }
>
> // capture a by value
> // WARNING: I stack allocated here but
> // set it to a global var, this is wrong;
> // it should probably be malloc'd, but since
> // I know I am just using it here, it is OK
> auto myfunc = MyFunctor(a);
>
> dg = &myfunc.opCall;
>
> return dg(10);
> }
>
> void main() {
> writeln(helper());
> }
typeof(&myfunc.opCall) == int delegate(int b) @nogc
what magic is this? I had no idea that taking the address of
opCall would give me a delegate.
More information about the Digitalmars-d
mailing list