Is "auto t=T();" not the same as "T t;"?
Ali Çehreli
acehreli at yahoo.com
Wed Oct 26 00:58:33 UTC 2022
On 10/25/22 17:16, Salih Dincer wrote:
> Excuse me, but they still write in purple prose about dynamic&static
> array literature here!
I've heard positive things about D's arrays from people who use D in
production. Especially slices...
> I've known D for more than 10 years, but the topic we're talking about
> still seems strange to me.
Your example makes it more complicated and potentially exposes a bug.
> The explanations given are not enough for
> me, I'm sorry.
There may be a number of different concepts to list but I don't think
there is anything inherently complicated with these topics (again, your
example is more complicated).
> Can anyone tell me what happens when I change the location of the
> structure?
What you mean is, you see different behaviour depending on struct X is
nested or not. The difference is, nested structs carry a context
pointer. This may be related to a bug for the different outputs that we see.
> So the X structure must be in the stack when it is in
> main(), and the following must be in the heap, right?
To nit-pick: The struct is just a definition. Not the struct but its
objects can be on the stack or on the heap.
But yes, all objects you have are on the stack.
> //void main() {
So when you uncomment that line and comment-out the following main()
line in the program, you see a different output.
I tested: If you make X a 'static struct', then you see the same output.
I think the difference is due to a bug.
Ali
More information about the Digitalmars-d-learn
mailing list