How is this code invalid?
thebluepandabear
therealbluepandabear at protonmail.com
Sat Dec 17 00:23:32 UTC 2022
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?
More information about the Digitalmars-d-learn
mailing list