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