# t00010 - Basic template instantiation ## Config ```yaml diagrams: t00010_class: type: class glob: - t00010.cc using_namespace: clanguml::t00010 include: namespaces: - clanguml::t00010 ``` ## Source code File `tests/t00010/t00010.cc` ```cpp #include #include namespace clanguml { namespace t00010 { template class A { public: T first; P second; }; template class B { public: A astring; }; class C { public: B aintstring; }; } // namespace t00010 } // namespace clanguml ``` ## Generated PlantUML diagrams ![t00010_class](./t00010_class.svg "Basic template instantiation") ## Generated Mermaid diagrams ![t00010_class](./t00010_class_mermaid.svg "Basic template instantiation") ## Generated JSON models ```json { "diagram_type": "class", "elements": [ { "bases": [], "display_name": "A", "id": "2222216618904514099", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [ { "access": "public", "is_static": false, "name": "first", "source_location": { "column": 7, "file": "t00010.cc", "line": 9, "translation_unit": "t00010.cc" }, "type": "T" }, { "access": "public", "is_static": false, "name": "second", "source_location": { "column": 7, "file": "t00010.cc", "line": 10, "translation_unit": "t00010.cc" }, "type": "P" } ], "methods": [], "name": "A", "namespace": "clanguml::t00010", "source_location": { "column": 41, "file": "t00010.cc", "line": 7, "translation_unit": "t00010.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "template_type", "name": "T", "template_parameters": [] }, { "is_variadic": false, "kind": "template_type", "name": "P", "template_parameters": [] } ], "type": "class" }, { "bases": [], "display_name": "A", "id": "1861520693741915300", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00010", "source_location": { "column": 41, "file": "t00010.cc", "line": 7, "translation_unit": "t00010.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "template_type", "name": "T", "template_parameters": [] }, { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "std::string" } ], "type": "class" }, { "bases": [], "display_name": "B", "id": "2303611426082708583", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [ { "access": "public", "is_static": false, "name": "astring", "source_location": { "column": 23, "file": "t00010.cc", "line": 15, "translation_unit": "t00010.cc" }, "type": "A" } ], "methods": [], "name": "B", "namespace": "clanguml::t00010", "source_location": { "column": 29, "file": "t00010.cc", "line": 13, "translation_unit": "t00010.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "template_type", "name": "T", "template_parameters": [] } ], "type": "class" }, { "bases": [], "display_name": "B", "id": "1498376939480949099", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "B", "namespace": "clanguml::t00010", "source_location": { "column": 29, "file": "t00010.cc", "line": 13, "translation_unit": "t00010.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "int" } ], "type": "class" }, { "bases": [], "display_name": "C", "id": "1880966578968892571", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [ { "access": "public", "is_static": false, "name": "aintstring", "source_location": { "column": 12, "file": "t00010.cc", "line": 20, "translation_unit": "t00010.cc" }, "type": "B" } ], "methods": [], "name": "C", "namespace": "clanguml::t00010", "source_location": { "column": 7, "file": "t00010.cc", "line": 18, "translation_unit": "t00010.cc" }, "template_parameters": [], "type": "class" } ], "name": "t00010_class", "package_type": "namespace", "relationships": [ { "access": "public", "destination": "2222216618904514099", "source": "1861520693741915300", "type": "instantiation" }, { "access": "public", "destination": "1861520693741915300", "label": "astring", "source": "2303611426082708583", "type": "aggregation" }, { "access": "public", "destination": "2303611426082708583", "source": "1498376939480949099", "type": "instantiation" }, { "access": "public", "destination": "1498376939480949099", "label": "aintstring", "source": "1880966578968892571", "type": "aggregation" } ], "using_namespace": "clanguml::t00010" } ```