On Saturday, 17 December 2022 at 00:23:32 UTC, thebluepandabear
wrote:
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?
Ali is right. It is a bug. Do not be like the man of the moon who
copies brothers like a monkey then learning all that is bad from
his brothers he convinces himself it is ok. Be your own man and
determine if you have what it takes or not. We are here for your
support. I am sure there is a method in object that can help you
with this bug because I have used it before, but do not be a
Lemming on the wall. You will fall. Then you will not be able to
help the other behind you from falling too.