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