On Monday, 12 August 2013 at 11:34:25 UTC, Jacob Carlborg wrote:
On 2013-08-11 21:08, Simen Kjaeraas wrote:

If you're looking for a no-overhead solution, then this might not be good enough. I'm surprised that a virtual function call is fine,
though.

How about this:

interface I
{
    size_t size (this T) ()
    {
        return __traits(classInstanceSize, T);
    }
}

class A : I
{
}

class B : I
{
    int a;
}

void main ()
{
    auto a = new A;
    auto b = new B;

    assert(a.size == 24);
    assert(b.size == 32);
}

Sorry but this doesn't work. b is a B, not an A.

try

I a = new A;
I b = new B;





Reply via email to