Is "auto t=T();" not the same as "T t;"?

Salih Dincer salihdb at hotmail.com
Wed Oct 26 00:16:55 UTC 2022


On Tuesday, 25 October 2022 at 20:36:28 UTC, matheus wrote:
> On
>> 
>> int[] a = [1];
>> int[] b = a.dup;
>>
>> assert(&a[0] !is &b[0]); // different memory
>> ```
>
> This is interesting, I understand the point of "reference vs 
> copy", and I'm OK with this design choice of, but I wonder in 
> the case of newcomers if this is a case the generate more 
> problem understanding this rules, like we are having here.
>
> Matheus.

Huh, I do NOT understand and I DO agree with you!

Excuse me, but they still write in purple prose about 
dynamic&static array literature here!

I've known D for more than 10 years, but the topic we're talking 
about still seems strange to me.  The explanations given are not 
enough for me, I'm sorry.

Can anyone tell me what happens when I change the location of the 
structure?  So the X structure must be in the stack when it is in 
main(), and the following must be in the heap, right?

```d
import std;

//void main() {

   struct X
   {
     struct Y {
       int i = 10;
       alias i this;
     }
     Y[] y = [Y.init];

     string toString() {
       return y.format!"%s";
     }
   }

void main() {

   X[2] x;
   x.writeln;       // [[10], [10]]

   x[0].y[0] = 0;   // [[0], [0]]
   x.writeln;

   x[0].y.length++;
   x[0].y[1] = 1;

   x[1].y[0] = 2;
   x.writeln;       // [[0, 1], [2]]

} /* Output of other state:
[[10], [10]]
[[0], [0]]
[[2, 1], [2]]
*/
```
SDB at 79


More information about the Digitalmars-d-learn mailing list