IFTI can deduce both the value and key types for associative arrays:
auto deduceKeyAndVal(T,S)(T[S] a){ return a; }
static assert(is(typeof(deduceKeyAndVal(["1":1,"2":2,"3":3]))==int[string]));
It would be nice if it could also deduce static array lengths:
auto deduceLength(T,size_t n)(T[n] a){ return a; }
static assert(is(typeof(deduceLength([1,2,3]))==int[3]));
Comment #1 by zheny — 2013-03-13T15:16:45Z
[1,2,3] seems is dynamic allocated array,so typeof([1,2,3]) == int[]
but
auto deduceLength(T,size_t n)(T[n] a){ return a; }
enum int[3] a = [1,2,3];
static assert(is(typeof(deduceLength(a))==int[3])); // pass
Comment #2 by timon.gehr — 2013-03-13T15:25:17Z
[1,2,3] is supposed to be a polysemous array literal. I mis-guessed the cause of this, merging into issue 9712.
*** This issue has been marked as a duplicate of issue 9712 ***