Bug or not? "Functions cannot return a function"

Jonathan M Davis via Digitalmars-d digitalmars-d at puremagic.com
Wed Nov 16 17:48:51 PST 2016


On Thursday, November 17, 2016 01:27:45 Meta via Digitalmars-d wrote:
> auto bug(alias f)()
> {
>      return cast(typeof(f))&f;
> }
>
> void fun() {}
>
> void main()
> {
>   bug!fun(); //Error: functions cannot return a function
> }

Well, you _can't_ return a function. You could return a function pointer or
a delegate, but not a function. What would it even mean to return a
function?

Why don't you just return &f? I don't understand why you're doing the cast.
&f should give you a pointer to f, so you have a function pointer that you
can then call later (though you'd need to assign the result of bug!fun() to
a variable, since it does nothing otherwise).

-  Jonathan M Davis



More information about the Digitalmars-d mailing list