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