Thread overview
Alias question ( 1.0 )
Apr 12, 2008
Edward Diener
Apr 13, 2008
Walter Bright
Apr 14, 2008
Edward Diener
Apr 15, 2008
Walter Bright
Apr 15, 2008
Edward Diener
April 12, 2008
I am trying to understand the difference between and alias type and an alias declaration.

Is the distinction such that if the next token after 'alias' is a type, then the alias always refers to the full type including that token before the final alias name, but if the next token after 'alias' is not a type then the alias always refers to the complete declaration before the final alias name ? Or is there some other rule that determines whether or not an alias is an alias for a type as opposed to an alias for a declaration ?
April 13, 2008
Edward Diener wrote:
> I am trying to understand the difference between and alias type and an alias declaration.

An alias type works analogously to C's typedef. An alias declaration gives an alternate name for any other name, like:

    alias foo.bar baz;

is sort of equivalent to the C:

    #define baz foo.bar

> Is the distinction such that if the next token after 'alias' is a type, then the alias always refers to the full type including that token before the final alias name, but if the next token after 'alias' is not a type then the alias always refers to the complete declaration before the final alias name ?

Right.
April 14, 2008
Walter Bright wrote:
> Edward Diener wrote:
>> I am trying to understand the difference between and alias type and an alias declaration.
> 
> An alias type works analogously to C's typedef. An alias declaration gives an alternate name for any other name, like:
> 
>     alias foo.bar baz;
> 
> is sort of equivalent to the C:
> 
>     #define baz foo.bar

OK, so an alias creates a compile-time symbol which stands for another symbol, as long as the symbol it stands for is not an expression but a declaration instead.

> 
>> Is the distinction such that if the next token after 'alias' is a type, then the alias always refers to the full type including that token before the final alias name, but if the next token after 'alias' is not a type then the alias always refers to the complete declaration before the final alias name ?
> 
> Right.

Thanks ! Appreciated !
April 15, 2008
Edward Diener wrote:
> Walter Bright wrote:
>> Edward Diener wrote:
>>> I am trying to understand the difference between and alias type and an alias declaration.
>>
>> An alias type works analogously to C's typedef. An alias declaration gives an alternate name for any other name, like:
>>
>>     alias foo.bar baz;
>>
>> is sort of equivalent to the C:
>>
>>     #define baz foo.bar
> 
> OK, so an alias creates a compile-time symbol which stands for another symbol, as long as the symbol it stands for is not an expression but a declaration instead.

Right. You can alias any symbol - other aliases, variable names, module names, function names, template names, struct names, etc.
April 15, 2008
Walter Bright wrote:
> Edward Diener wrote:
>> Walter Bright wrote:
>>> Edward Diener wrote:
>>>> I am trying to understand the difference between and alias type and an alias declaration.
>>>
>>> An alias type works analogously to C's typedef. An alias declaration gives an alternate name for any other name, like:
>>>
>>>     alias foo.bar baz;
>>>
>>> is sort of equivalent to the C:
>>>
>>>     #define baz foo.bar
>>
>> OK, so an alias creates a compile-time symbol which stands for another symbol, as long as the symbol it stands for is not an expression but a declaration instead.
> 
> Right. You can alias any symbol - other aliases, variable names, module names, function names, template names, struct names, etc.

Got it now. Thanks !