Make type in template with defined base
template<std::derived_from<UPrimitiveComponent> PrimitiveClass>
struct FPTAPushedEntryBase<UPrimitiveComponent>now if you do something like struct FPTAPushedEntryStaticMesh : public FPTAPushedEntryBase<USceneComponent> you will get a compiler error, because USceneComponent is a parent of UPrimitiveComponent.