Bug 9711 – extend IFTI to deduce static array length

Status
RESOLVED
Resolution
DUPLICATE
Severity
enhancement
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2013-03-13T15:08:00Z
Last change time
2013-03-13T15:25:17Z
Assigned to
nobody
Creator
timon.gehr
Depends on
9712

Comments

Comment #0 by timon.gehr — 2013-03-13T15:08:02Z
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 ***