What is this strange alias syntax?
Steven Schveighoffer
schveiguy at yahoo.com
Mon May 23 06:59:01 PDT 2011
On Mon, 23 May 2011 09:32:47 -0400, Timon Gehr <timon.gehr at gmx.ch> wrote:
> Steven Schveighoffer wrote:
>> it's akin to
>> making:
>>
>> if(x);
>>
>> invalid. Yes, it's valid syntax, but it's almost certainly not what the
>> user wanted. It's special cased for failure, to aid the developer in
>> writing less buggy programs. This would be a similar change, and I
>> actually thought it was already in the compiler.
>
> It is in the compiler. It is actually not valid syntax anymore
> (disallowed by
> grammar and caught by the parser).
When I said I thought it was already in the compiler, I meant the bizarro
function type declaration, not the empty if statement.
> And it is not similar to removing function type
> alias. You can write if(x){} as a replacement if you need it.
>
> There is currently no alternative for the alias.
But why do you need a function type vs. a function pointer type?
Especially since the function pointer type is easily built from the
function type, and you can't actually use the function type until you turn
it into a function pointer.
>
>>
>> I'll throw it back at you, do you see a good use case for it? And no,
>> porting C code isn't a good use case.
>
> There are no alias in C code.
>
> I actually gave one:
> Timon Gehr wrote:
>> alias int func();
>>
>> int main(){
>> static assert(is(typeof(main)==func);
>> return 0;
>> }
static assert(is(typeof(&main) == int function());
More straightforward and descriptive.
> BTW:
>
> writeln(typeid(int function(int))); //int()*
>
> wtf?
That needs to be fixed, the runtime's TypeInfo.toString methods are not
always accurate (I think this warrants a bugzilla report).
-Steve
More information about the Digitalmars-d-learn
mailing list