Is there a use case for 0-length static arrays? If there's not a use-case, then this should probably be a compiler error: int[0] logs; // <- disallow this void main() { logs = [4]; } The assignment statement causes a linker error (if you comment it out you won't get any linker errors): /+ test.obj(test) Offset 002DFH Record Type 009D Error 16: Index Range --- errorlevel 1 +/
(In reply to comment #0) > Is there a use case for 0-length static arrays? I believe they can be used as a value type in an associative array to create a set.
One use case are variable-length structs: struct MyArray(T) { size_t len; T data[0]; // access methods here, that use data.offsetof } You create such array with a C malloc or GC malloc.
(In reply to comment #1) > (In reply to comment #0) > > Is there a use case for 0-length static arrays? > > I believe they can be used as a value type in an associative array to create a > set. Ah, you're right. I even forgot about opening this topic which mentioned this trick: http://www.digitalmars.com/d/archives/digitalmars/D/A_case_for_valueless_AA_s_133165.html I'm closing this down.