digitalmars.D - Aliasing lambdas
- "Peter Alexander" <peter.alexander.au gmail.com> Jan 13 2013
- Timon Gehr <timon.gehr gmx.ch> Jan 13 2013
- Timon Gehr <timon.gehr gmx.ch> Jan 13 2013
- Philippe Sigaud <philippe.sigaud gmail.com> Jan 13 2013
Is there any reason why this isn't allowed:
alias f = (x => x);
but this is:
template A(alias B) { alias A = B; }
alias f = A!(x => x);
???
Jan 13 2013
On 01/13/2013 08:55 PM, Peter Alexander wrote:Is there any reason why this isn't allowed: alias f = (x => x); but this is: template A(alias B) { alias A = B; } alias f = A!(x => x); ???
No. It is a gratuitous grammar limitation.
Jan 13 2013
On 01/13/2013 09:38 PM, Philippe Sigaud wrote:On Sun, Jan 13, 2013 at 9:07 PM, Timon Gehr <timon.gehr gmx.ch> wrote:On 01/13/2013 08:55 PM, Peter Alexander wrote:Is there any reason why this isn't allowed: alias f = (x => x); but this is: template A(alias B) { alias A = B; } alias f = A!(x => x); ???
No. It is a gratuitous grammar limitation.
The same limitation forbids: alias __traits(whatever, ...) result; The grammar says: AliasDeclaration: alias BasicType Declarator (and others, but this is the one limiting you). BasicType should be replaced by PrimaryExrpession, or something like that.
I think it should be roughly: alias TemplateArgument Identifier; alias Identifier=TemplateArgument; Note: The current grammar allows alias int x = 2; Which does not make any sense.
Jan 13 2013
On Sun, Jan 13, 2013 at 9:07 PM, Timon Gehr <timon.gehr gmx.ch> wrote:On 01/13/2013 08:55 PM, Peter Alexander wrote:Is there any reason why this isn't allowed: alias f = (x => x); but this is: template A(alias B) { alias A = B; } alias f = A!(x => x); ???
No. It is a gratuitous grammar limitation.
The same limitation forbids: alias __traits(whatever, ...) result; The grammar says: AliasDeclaration: alias BasicType Declarator (and others, but this is the one limiting you). BasicType should be replaced by PrimaryExrpession, or something like that.
Jan 13 2013









Timon Gehr <timon.gehr gmx.ch> 