Consider this snippet: import std.stdio; import std.conv; import core.vararg; void main() { string[] s = ["aa", "bb", "cc"]; string []* ss; void * v; ss = &s; v = cast(void*)s; ss = cast(string[]*) v; s = *ss; writeln(s); } This fails, Stack overflow. If s was a double array, it works. What am I doing wrong?