It conflicts with ”alias this” syntax. template Inherits(T) { T value; alias T Inherits; // (1) Inherits!int == int alias T this; // (2) declares "alias this"! } struct S { mixin Inherits!int; // (1) invalid or (2) mixing alias this declaration? }
Kenji Hara 2012年4月12日11:21 Reid Levenick <reid.whitewater+dl...@gmail.com>: > Firstly, I had no idea where suggestions should go, and I saw a few others > here and thus here I am. > > I was writing some code that depended heavily on my own eponymous templates, > and decided to change the names of some of them to make them more > self-documenting. However, after changing the name, I encountered a long > stream of unintelligible errors (to me, I haven't been using D for a long > time) about template instances. > > So, my idea is that the 'this' keyword could be used in templates as a > shortcut for eponymous templates, allowing code like this > > template anEponymousTemplate( size_t whatever ) { > enum this = whatever * 2; > } > template anotherOne( T ) { > static if( is( T == class ) ) { > alias long this; > } else { > alias int this; > } > } > > Which would reduce cruft and make it easier to read some templates, as well > as reducing maintenance.