Implicit fn template instantiation
anthony.difranco at yale.edu
anthony.difranco at yale.edu
Mon Mar 27 12:35:33 PST 2006
Thanks; it works.
In article <e00fq4$131r$1 at digitaldaemon.com>, Oskar Linde says...
>
>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