Implicit fn template instantiation
Oskar Linde
oskar.lindeREM at OVEgmail.com
Fri Mar 24 01:57:23 PST 2006
BCS wrote:
> In article <dvvk0i$2tum$1 at digitaldaemon.com>, anthony.difranco at yale.edu says...
>> Can someone explain why I can't instantiate this template implicitly andor
>> comment on whether I'm overlooking a better way to accomplish what this template
>> does?
>>
>> template increment(T, K)
>> {
>> void increment(T[K] association, K key)
>> {
>> if(key in association)
>> {
>> association[key]++;
>> }
>> else
>> {
>> association[key] = 1;
>> }
>> }
>> }
>>
>> Thanks,
>> Anthony
>>
>>
>
> IIRC
>
> if(T* val = (key in association))
> (*val)++;
> else
> association[key]=1;
>
> haven't tried it but it should work
Yes. A full working version with the current limited IFTI would look like:
template increment(T,K) {
static assert(is(K : typeof(T.init.keys[0])));
void increment(inout T association, K key) {
if(auto val = (key in association))
(*val)++;
else
association[key]=1;
}
}
/Oskar
More information about the Digitalmars-d
mailing list