What is this strange alias syntax?

Simen Kjaeraas simen.kjaras at gmail.com
Sat May 21 02:15:32 PDT 2011


On Sat, 21 May 2011 05:12:20 +0200, Andrej Mitrovic <none at none.none> wrote:

> Taken from the docs:
>
> alias int func(int);
> void main()
> {
>     if ( is(func[]) )               // not satisfied because arrays of
>         writeln("satisfied");    // functions are not allowed
>     else
>         writeln("not satisfied");
> }
>
> It will print not satisfied. But I'm not sure what func is supposed to  
> be? An alias.. to what? I can't declare variables of its type:
>     func x;
>     error:  variable test.main.x cannot be declared to be a function
>
> Of course if you write the alias the usual way it will print  
> 'satisfied'. Nothing strange about having an array of functions in D:
>
> alias int function(int) func;
> void main()
> {
>     if ( is(func[]) )
>         writeln("satisfied");
>     else
>         writeln("not satisfied");
> }

It's the old C syntax for defining function pointers. Well, without the
pointer. And that last part is important, because the latter example is
an array of function pointers, with which D has no issue.

-- 
   Simen


More information about the Digitalmars-d-learn mailing list