I am reading the fantastic book about D by Ali Çehreli, and he gives the following example when he talks about variadic functions:

```D
int[] numbersForLaterUse;

void foo(int[] numbers...) {
   numbersForLaterUse = numbers;
}

struct S {
  string[] namesForLaterUse;

  void foo(string[] names...) {
     namesForLaterUse = names;
  }
}
```

He says that the code above is a bug because:

"Both the free-standing function foo() and the member function S.foo() are in error because they store slices to automatically-generated temporary arrays that live on the program stack. Those arrays are valid only during the execution of the
variadic functions."

The thing is, when I run the code I get absolutely no error, so how is this exactly a 'bug' if the code runs properly? That's what I am confused about. What is the D compiler doing behind the scenes?

Reply via email to