digitalmars.D - Implicit Template Properties - rules change proposal
- Tom S (35/35) Jun 20 2006 I often find myself creating templates like:
- Frank Benoit (3/4) Jun 20 2006 Yes, it should always be possible to write the things easy. Having the
- Sean Kelly (3/47) Jun 20 2006 This would be awesome.
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> 