two copies of class with dependent base - one is "unusable"

if I have something like

template<class T>
class V8TOOLKIT_WRAPPED_CLASS
MyTemplate {};

template<class T>
class V8TOOLKIT_WRAPPED_CLASS DerivedFromMyTemplate : public MyTemplate<T> {};

and then DerivedFromMyTemplate some_var;

I get two CXXRecordDecl’s from my matcher which just matches all classes and structs – one with a base of

MyTemplate

and it has no associated cxxrecorddecl or tagdecl. It has typeclass 32 (which I don’t know what means).

Then I get another one with with a base of: MyTemplate (notice vs ). This one also has typeclass 32 but does have a cxxrecorddel and tagdecl.

If I instantiate another type, DerivedFromMyTemplate some_other_var;

I do not get another “bad” type, I just get 3 - bad, int, short.

I’ve gotten what I need by simply skipping the “bad” one but I’d like to know what’s going on.

Thank you.

–Zac