On 01/27/15 10:40, Daniel Kozak via Digitalmars-d-learn wrote:
> On Tuesday, 27 January 2015 at 09:36:49 UTC, Daniel Kozak wrote:
>> On Tuesday, 27 January 2015 at 09:01:39 UTC, ref2401 wrote:
>>> For several times I've met struct(or static struct) usage in Phobos for 
>>> singleton pattern implementation. Unfortunately now i can remember only 
>>> core.runtime.Runtime.
>>> So I've got a question. Why do Phobos guys use struct or static struct for 
>>> or singleton pattern implementation? Why don't use static final class for 
>>> this purpose?
>>
>> I do not think this is a singleton pattern (no instance). I see it much more 
>> like namespace in case of core.runtime.Runtime. And yes static final class 
>> could do that too but struct looks better than final class and you can 
>> disable this on structs
> 
> import std.stdio;
> import std.conv;
> 
> struct S
> {
>     @disable this();
> }
> 
> final class C
> {
> }
> 
> void main() {
>     writeln(C.sizeof);
>     writeln(S.sizeof);
> }

D's `class` magically adds a level of indirection, so C.sizeof
gives you just the size of the _reference_.

For the true (ie instance/payload) size you'd have to use 

   __traits(classInstanceSize, C)

artur

Reply via email to