An idea to improve eponymous templates
kenji hara
k.hara.pg at gmail.com
Wed Apr 11 20:56:14 PDT 2012
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+dlang at 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.
More information about the Digitalmars-d
mailing list