--- Comment #9 from Walter Bright <> 2012-01-23 
01:37:27 PST ---
(In reply to comment #4)
> More strangeness:  If you don't explicitly provide an initial value for
> const/immutable members, they do contribute to the size of the struct.
>     struct Foo { const int i; }
>     writeln(Foo.sizeof); // Prints 4
>     struct Bar { const int i = 123; }
>     writeln(Bar.sizeof); // Prints 1

This is as designed. A const field without an initializer can be initialized by
a constructor. A const field with an initializer does not need any per-instance
storage, and becomes a static member.

> I suspect that this bug could cause unexpected memory corruption when such
> structs are, for instance, passed to C functions -- especially when the
> behaviour depends on such a small detail.

It is not a bug, it is as designed. (const in D and C are different, and
conflating the two will cause problems anyway)

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to