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": "1:2:7", "derived": [2, 5], "uses": ["*1:2:7", "*1:8:18", "*1:13:17"] }, { "id": 1, "usr": "c:@ST>1#T@Base2", "short_name": "Base2", "qualified_name": "Base2", "definition": "1:5:7", "derived": [3, 5], "uses": ["*1:5:7", "*1:11:18", "*1:13:27"] }, { "id": 2, "usr": "c:@ST>1#Ni@Derived1", "short_name": "Derived1", "qualified_name": "Derived1", "definition": "1:8:7", "parents": [0], "derived": [5], "uses": ["*1:8:7", "*1:13:43"] }, { "id": 3, "usr": "c:@ST>1#T@Derived2", "short_name": "Derived2", "qualified_name": "Derived2", "definition": "1:11:7", "parents": [1], "derived": [5], "uses": ["*1:11:7", "*1:13:56"] }, { "id": 5, "usr": "c:@S@Derived", "short_name": "Derived", "qualified_name": "Derived", "definition": "1:13:7", "parents": [0, 1, 2, 3], "uses": ["*1:13:7", "*1:13:33", "*1:13:65"] }] } */