On Sunday, 24 January 2016 at 13:33:50 UTC, Jacob Carlborg wrote:
On 2016-01-24 14:24, Michel Fortin wrote:
On further thought, how do you make templates with
specialization take
named arguments?
template TFoo(T) { ... } // #1
template TFoo(T : T[]) { ... } // #2
template TFoo(T : char) { ... } // #3
My guess would be this:
template TFoo(T:) { ... } // #1
template TFoo(T: : T[]) { ... } // #2
template TFoo(T: : char) { ... } // #3
... but it makes the declaration a bit strange.
Yes. Rule 7 covers that. There's also an example showing the
syntax, search for "Template specialization with named
parameter". Yes, it does look a bit strange.
Just like C++98 used to require space between two `>` in
templates ? ;)
I see no way Walter would accept that.
Why not just:
```
@namedParams
template TFoo(T : char)
```
Other thoughts:
1. How often would one need to mix named and unnamed parameters ?
2. And how often would one need named params at all, so dlang
should provide super-easy syntax with inline `:` ?
3. `:` is not very visible, nor searchable. (OTOH, with a lot of
a)