digitalmars.D - Implicit Template Properties - rules change proposal
- Tom S <h3r3tic remove.mat.uni.torun.pl> Jun 20 2006
- Frank Benoit <keinfarbton nospam.xyz> Jun 20 2006
- Sean Kelly <sean f4.ca> Jun 20 2006
I often find myself creating templates like:
// ----
tempate doSomethingImpl(T) {
template loop(int i) {
....
alias ... loop;
}
alias loop!(0) res;
}
template doSomething(T) {
alias doSomethingImpl!(T).res doSomething;
}
// ----
Clearly the second template is redundant and exists there only to make
the usage pattern easier.
My proposal is to change the rules for implicit template properties
from:
"If a template has exactly one member in it, and the name of that member
is the same as the template name, that member is assumed to be referred
to in a template instantiation"
to:
"If a template has exactly one *public* member in it, (...) "
Then, the template would look like:
// ----
tempate doSomething(T) {
private template loop(int i) {
....
alias ... loop;
}
alias loop!(0) doSomething;
}
// ----
Opinions ?
--
Tomasz Stachowiak /+ a.k.a. h3r3tic +/
Jun 20 2006
Opinions ?
Yes, it should always be possible to write the things easy. Having the restriction of only one member for such a template seams needless. Your proposal opens another door for easier code with less complexity.
Jun 20 2006
Tom S wrote:I often find myself creating templates like: // ---- tempate doSomethingImpl(T) { template loop(int i) { .... alias ... loop; } alias loop!(0) res; } template doSomething(T) { alias doSomethingImpl!(T).res doSomething; } // ---- Clearly the second template is redundant and exists there only to make the usage pattern easier. My proposal is to change the rules for implicit template properties from: "If a template has exactly one member in it, and the name of that member is the same as the template name, that member is assumed to be referred to in a template instantiation" to: "If a template has exactly one *public* member in it, (...) " Then, the template would look like: // ---- tempate doSomething(T) { private template loop(int i) { .... alias ... loop; } alias loop!(0) doSomething; } // ---- Opinions ?
This would be awesome. Sean
Jun 20 2006









Frank Benoit <keinfarbton nospam.xyz> 