On Fri, 14 Nov 2008 21:06:39 +0300, Tomas Lindquist Olsen
<[EMAIL PROTECTED]> wrote:
Denis Koroskin wrote:
I can't find a way to get a class sizeof property - it returns 4 (32bit
pointer size) always. I tried many ways but still can't figure out how
to do this. Documentation says that
".sizeof applied to a class object returns the size of the class
reference, not the class instantiation."
Is it possible? Any idea is much appreciated.
No nice way to do it..
auto sz = myclass.classinfo.init.length;
problem this is not a compiletime constant,
In D2 you can use __traits to get it...
Kinda lame if you ask me :P
how about .instancesizeof ? I doubt that's even a remotely common
variable name ...
-Tomas
__traits trick works nice, thank you!
BTW, I found small inconsistency/bug:
template SizeOfPointee(T)
{
static if (is (T t)) {
enum SizeOfPointee = typeof(*t).sizeof;
}
}
template SizeOfPointer(T)
{
static if (is (T t)) {
enum SizeOfPointer = typeof(t).sizeof;
}
}
int i = SizeOfPointee!(int*); // works ok
int j = SizeOfPointer!(int*); // fails
I believe both should work.