template class Base1 {}; template class Base2 {}; template class Derived1 : Base1 {}; template class Derived2 : Base2 {}; class Derived : Base1<3>, Base2, Derived1<4>, Derived2 {}; /* OUTPUT: { "types": [{ "id": 0, "usr": "c:@ST>1#Ni@Base1", "short_name": "Base1", "qualified_name": "Base1", "definition_spelling": "2:7-2:12", "definition_extent": "2:1-2:15", "derived": [2, 5], "uses": ["*2:7-2:12", "*8:18-8:23", "*13:17-13:22"] }, { "id": 1, "usr": "c:@ST>1#T@Base2", "short_name": "Base2", "qualified_name": "Base2", "definition_spelling": "5:7-5:12", "definition_extent": "5:1-5:15", "derived": [3, 5], "uses": ["*5:7-5:12", "*11:18-11:23", "*13:27-13:32"] }, { "id": 2, "usr": "c:@ST>1#Ni@Derived1", "short_name": "Derived1", "qualified_name": "Derived1", "definition_spelling": "8:7-8:15", "definition_extent": "8:1-8:29", "parents": [0], "derived": [5], "uses": ["*8:7-8:15", "*13:43-13:51"] }, { "id": 3, "usr": "c:@ST>1#T@Derived2", "short_name": "Derived2", "qualified_name": "Derived2", "definition_spelling": "11:7-11:15", "definition_extent": "11:1-11:29", "parents": [1], "derived": [5], "uses": ["*11:7-11:15", "*13:56-13:64"] }, { "id": 4, "usr": "c:class_inherit_templated_parent.cc@154", "uses": ["*11:24-11:25"] }, { "id": 5, "usr": "c:@S@Derived", "short_name": "Derived", "qualified_name": "Derived", "definition_spelling": "13:7-13:14", "definition_extent": "13:1-13:76", "parents": [0, 1, 2, 3], "uses": ["*13:7-13:14", "*13:33-13:40", "*13:65-13:72"] }] } */