On Monday, 15 February 2021 at 07:26:56 UTC, Jack wrote:
I need to check if an instance is of a specific type derived from my base class but this class has template parameter and this type isn't available at time I'm checking it. Something like:


Non-templated interface/base class is probably the only way I'm aware of, it is also how it is usually done with C# generics where needed for the same reason.

Even though typeid() knows the type I have no idea how to use it that way.


Interface adds 1 pointer to classinfo or vtbl, so it is increases instance size a bit.

```
import std;

class B { }
class A(T) : B { }
class X : B { }
class Z : B { }

interface IA {}
class AA(T) : B, IA {}

void main()
{
    writeln(__traits(classInstanceSize, AA!void)); // prints 24
    writeln(__traits(classInstanceSize, A!void)); // prints 16
}

```


Reply via email to