On Sat, Dec 17, 2022 at 12:23:32AM +0000, thebluepandabear via Digitalmars-d-learn wrote: [...] > ```D > int[] numbersForLaterUse; > > void foo(int[] numbers...) { > numbersForLaterUse = numbers; > } > > struct S { > string[] namesForLaterUse; > > void foo(string[] names...) { > namesForLaterUse = names; > } > } > ``` [...] > 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?
Try labelling the above functions with @safe and see what the compiler says. If you really want to see what could possibly have gone wrong, try this version of the code: ------------------------------snip----------------------------------- int[] numbersForLaterUse; void foo(int[] numbers...) { numbersForLaterUse = numbers; } struct S { string[] namesForLaterUse; void foo(string[] names...) { namesForLaterUse = names; } } void whatwentwrong() { import std.stdio; writeln(numbersForLaterUse); } void whatelsewentwrong(S s) { import std.stdio; writeln(s.namesForLaterUse); } void badCodeBad() { foo(1, 2, 3, 4, 5); } S alsoReallyBad() { S s; s.foo("hello", "world!"); return s; } void main() { badCodeBad(); whatwentwrong(); auto s = alsoReallyBad(); whatelsewentwrong(s); } ------------------------------snip----------------------------------- The results will likely differ depending on your OS and specific environment; but on my Linux machine, it outputs a bunch of garbage (instead of the expected numbers and "hello" "world!" strings) and crashes. T -- If you want to solve a problem, you need to address its root cause, not just its symptoms. Otherwise it's like treating cancer with Tylenol...