Proposal: .isizeof property for compile-time instance size
Sean Kelly
sean at f4.ca
Mon Apr 10 09:27:49 PDT 2006
S. Chancellor wrote:
> On 2006-04-09 13:28:41 -0700, Sean Kelly <sean at f4.ca> said:
>
>> (this was originally posted to D bugs, but turned out to be a mistake
>> so I'm reposting it here for discussion)
>>
>> As D lacks a lexical specifier for class reference types there is
>> currently no way to determine the size of a class instance at
>> compile-time. A simple solution would be to add a new property, valid
>> for pointer and reference types, that evaluates to the size of the
>> referenced type. Thus:
>>
>> (byte*).isizeof == byte.sizeof == 1
>> (byte**).isizeof == (byte*).sizeof == 4 (on 32-bit systems)
>> byte.isizeof == Error: property isizeof is only valid for reference
>> types.
>>
>> MyClass { int x, y; }
>> MyClass.isizeof == 8
>> (MyClass*).isizeof == MyClass.sizeof == 4 (on 32-bit systems)
>>
>> Multiple levels of indirection can be eliminated using recursive
>> templates, so there is no reason to collapse multiple levels of
>> indirection and return the size of the final referenced type.
>
> I'd rather see my proposal implemented, and then classes be in terms of
> true references and then ad a "psizeof" to get the size of the physical
> pointer or stack variable. Of course, I would be bias toward my
> proposal. :)
As long as there's some way to get the size of classes at compile time
I'll be happy :-)
Sean
More information about the Digitalmars-d
mailing list