What is this strange alias syntax?
Stewart Gordon
smjg_1998 at yahoo.com
Mon May 23 17:07:29 PDT 2011
On 22/05/2011 21:51, Timon Gehr wrote:
<snip>
>> I suspect what Andrej actually meant is to kill treating function
>> signatures as types in this way. And possibly "enhancement
>> request" rather than "bug".
>
> It is the opposite of an enhancement request. It means removing a
> feature that cannot be meaningfully substituted by other features.
Unless you know a use case I've never heard of, it's no more "a feature that cannot be
meaningfully substituted by other features" than the C preprocessor.
> (also, removing it increases the inconsistency of the language and
> makes the compiler more complex).
I disagree. My point is that function types and data types have practically nothing in
common. So your argument seems to me like claiming that D is inconsistent because classes
and functions aren't interchangeable.
<snip>
>> True, if you use "type" in a broad sense. But it doesn't declare
>> a variable of that type, and you can't use it as a type as such.
>> Really, function signatures and data types are distinct entities
>> and ought not to be interchangeable.
>
> You can alias any symbol. Data types and other symbols are
> distinct entities too. By your arguments, this is a bad thing to
> have.
But do function signatures count as symbols? I'm not sure.
> Also, a function signature, while not a data type is still a _type_
> (the "broad sense" is the D sense. You can do
> typeof(some_function)).
And do what _with_ it, let alone that cannot be done by any other means?
<snip>
> alias int func();
>
> int main(){
> static assert(is(typeof(main)==func);
alias int function() func;
static assert (is(typeof(&main) == func));
> return 0;
> }
>
> I do not get why anybody would want to remove the possibility to
> refer to function signatures. It can be handy for template
> constraining.
<snip>
Can you give an example?
Stewart.
More information about the Digitalmars-d-learn
mailing list