www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Alias question ( 1.0 )

reply Edward Diener <eddielee_no_spam_here tropicsoft.com> writes:
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 ?
Apr 12 2008
parent reply Walter Bright <newshound1 digitalmars.com> writes:
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.
Apr 13 2008
parent reply Edward Diener <eddielee_no_spam_here tropicsoft.com> writes:
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 !
Apr 13 2008
parent reply Walter Bright <newshound1 digitalmars.com> writes:
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.
Apr 14 2008
parent Edward Diener <eddielee_no_spam_here tropicsoft.com> writes:
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 !
Apr 14 2008