www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 19178] New: Static initialization of 2d static arrays in

https://issues.dlang.org/show_bug.cgi?id=19178

          Issue ID: 19178
           Summary: Static initialization of 2d static arrays in structs
                    produces garbage or doesn't compile sometimes
           Product: D
           Version: D2
          Hardware: x86
                OS: Windows
            Status: NEW
          Severity: normal
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: dkorpel live.nl

Doing this:
```
struct T {
    int[3][3] arr = 2;
}
```
Results in:
cannot implicitly convert expression 2 of type int to int[3][3]

While it's okay to do this in a function body. Furthermore:
```
import std.stdio: writeln;

struct T {
    int[3][3] arr = [2, 1];
    this(int stub) {
        arr[0][0] = 9;
    }
}

void main() {
    T.init.writeln;
    T(0).writeln;
}
```
Outputs this:
```
T([[2, 1, 0], [0, 0, 118033674], [723976, 0, 4100]])
T([[9, 2, 2], [1, 1, 1], [0, 0, 0]])
```

The .init value is incorrect and has garbage.

Related: https://issues.dlang.org/show_bug.cgi?id=13799
"Whole-array initialization for static fixed-size arrays of arrays too"

--
Aug 19 2018