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?