digitalmars.D - Implicit fn template instantiation
- anthony.difranco yale.edu (19/19) Mar 23 2006 Can someone explain why I can't instantiate this template implicitly and...
- Sean Kelly (4/7) Mar 23 2006 Mostly because ITI is still incomplete. Anything beyond strict type
- BCS (7/26) Mar 23 2006 IIRC
- Oskar Linde (12/45) Mar 24 2006 Yes. A full working version with the current limited IFTI would look lik...
- anthony.difranco yale.edu (2/47) Mar 27 2006
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
Mar 23 2006
anthony.difranco yale.edu wrote: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?Mostly because ITI is still incomplete. Anything beyond strict type replacement doesn't really work. Sean
Mar 23 2006
In article <dvvk0i$2tum$1 digitaldaemon.com>, anthony.difranco 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, AnthonyIIRC if(T* val = (key in association)) (*val)++; else association[key]=1; haven't tried it but it should work
Mar 23 2006
BCS wrote:In article <dvvk0i$2tum$1 digitaldaemon.com>, anthony.difranco yale.edu says...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; } } /OskarCan 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, AnthonyIIRC if(T* val = (key in association)) (*val)++; else association[key]=1; haven't tried it but it should work
Mar 24 2006
Thanks; it works. In article <e00fq4$131r$1 digitaldaemon.com>, Oskar Linde says...BCS wrote:In article <dvvk0i$2tum$1 digitaldaemon.com>, anthony.difranco yale.edu says...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; } } /OskarCan 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, AnthonyIIRC if(T* val = (key in association)) (*val)++; else association[key]=1; haven't tried it but it should work
Mar 27 2006