On 12/04/12 04:21, Reid Levenick wrote:
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.
This has been suggested about 200 times...
As already mentioned, use of 'this' conflicts with 'alias this'.
I also think there are problems with local templates.
class S
{
void foo()
{
template XX(int n) {
alias this this; // !! first 'this' is S, second is XX
}
XX!(7) q;
}
}
Another suggestion that was made in the past was 'return'. I suspect
that doesn't work, either, because for example typeof(return) already
has a meaning.