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]));
[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
[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 ***