On Sunday, 8 April 2018 at 15:04:49 UTC, number wrote:
the write() shows a 'null' if the struct has a function/method.
why is that?
```
import std.stdio;
void main()
{
struct S
{
int i;
}
S s;
writeln(s); // S(0)
writeln(typeid(s).sizeof); // 8
struct S2
{
int i;
this(this){}
}
S2 s2;
import std.conv: to;
writeln(s2); // S2(0, null)
writeln(typeid(s2).sizeof); // 8
}
```
S2 is a nested struct [1], which means it has a hidden pointer
field that's used to access its enclosing scope. If you change
the definition to `static struct S2`, you'll get the same output
for both structs.
[1] https://dlang.org/spec/struct.html#nested