What is this strange alias syntax?
Steven Schveighoffer
schveiguy at yahoo.com
Sun May 22 03:57:00 PDT 2011
On Sat, 21 May 2011 05:15:32 -0400, Simen Kjaeraas
<simen.kjaras at gmail.com> wrote:
> 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.
>
Yes, and I thought we were killing that syntax because of how horrible it
is?
-Steve
More information about the Digitalmars-d-learn
mailing list