{
```
## Generated UML diagrams

+## Generated JSON models
+```json
+{
+ "diagram_type": "class",
+ "elements": [
+ {
+ "bases": [],
+ "display_name": "clanguml::t00008::A",
+ "id": "1657660300852090121",
+ "is_abstract": false,
+ "is_nested": false,
+ "is_struct": false,
+ "is_template": true,
+ "is_union": false,
+ "members": [
+ {
+ "access": "public",
+ "is_static": false,
+ "name": "value",
+ "source_location": {
+ "file": "../../tests/t00008/t00008.cc",
+ "line": 11
+ },
+ "type": "T"
+ },
+ {
+ "access": "public",
+ "is_static": false,
+ "name": "pointer",
+ "source_location": {
+ "file": "../../tests/t00008/t00008.cc",
+ "line": 12
+ },
+ "type": "T *"
+ },
+ {
+ "access": "public",
+ "is_static": false,
+ "name": "reference",
+ "source_location": {
+ "file": "../../tests/t00008/t00008.cc",
+ "line": 13
+ },
+ "type": "T &"
+ },
+ {
+ "access": "public",
+ "is_static": false,
+ "name": "values",
+ "source_location": {
+ "file": "../../tests/t00008/t00008.cc",
+ "line": 14
+ },
+ "type": "std::vector"
+ },
+ {
+ "access": "public",
+ "is_static": false,
+ "name": "ints",
+ "source_location": {
+ "file": "../../tests/t00008/t00008.cc",
+ "line": 15
+ },
+ "type": "std::array"
+ },
+ {
+ "access": "public",
+ "is_static": false,
+ "name": "comparator",
+ "source_location": {
+ "file": "../../tests/t00008/t00008.cc",
+ "line": 17
+ },
+ "type": "clanguml::t00008::CMP"
+ }
+ ],
+ "methods": [],
+ "name": "A",
+ "namespace": "clanguml::t00008",
+ "source_location": {
+ "file": "../../tests/t00008/t00008.cc",
+ "line": 9
+ },
+ "template_parameters": [
+ {
+ "is_variadic": false,
+ "kind": "template_type",
+ "name": "T",
+ "template_parameters": []
+ },
+ {
+ "default": "T",
+ "is_variadic": false,
+ "kind": "template_type",
+ "name": "P",
+ "template_parameters": []
+ },
+ {
+ "default": "nullptr",
+ "is_variadic": false,
+ "kind": "non_type_template",
+ "template_parameters": [],
+ "type": "clanguml::t00008::CMP"
+ },
+ {
+ "default": "3",
+ "is_variadic": false,
+ "kind": "non_type_template",
+ "name": "N",
+ "template_parameters": [],
+ "type": "int"
+ }
+ ],
+ "type": "class"
+ },
+ {
+ "bases": [],
+ "display_name": "clanguml::t00008::Vector",
+ "id": "1677407014842680311",
+ "is_abstract": false,
+ "is_nested": false,
+ "is_struct": true,
+ "is_template": true,
+ "is_union": false,
+ "members": [
+ {
+ "access": "public",
+ "is_static": false,
+ "name": "values",
+ "source_location": {
+ "file": "../../tests/t00008/t00008.cc",
+ "line": 21
+ },
+ "type": "std::vector"
+ }
+ ],
+ "methods": [],
+ "name": "Vector",
+ "namespace": "clanguml::t00008",
+ "source_location": {
+ "file": "../../tests/t00008/t00008.cc",
+ "line": 20
+ },
+ "template_parameters": [
+ {
+ "is_variadic": false,
+ "kind": "template_type",
+ "name": "T",
+ "template_parameters": []
+ }
+ ],
+ "type": "class"
+ },
+ {
+ "bases": [],
+ "display_name": "clanguml::t00008::B>",
+ "id": "1968575752686868237",
+ "is_abstract": false,
+ "is_nested": false,
+ "is_struct": true,
+ "is_template": true,
+ "is_union": false,
+ "members": [
+ {
+ "access": "public",
+ "is_static": false,
+ "name": "template_template",
+ "source_location": {
+ "file": "../../tests/t00008/t00008.cc",
+ "line": 25
+ },
+ "type": "C"
+ }
+ ],
+ "methods": [],
+ "name": "B",
+ "namespace": "clanguml::t00008",
+ "source_location": {
+ "file": "../../tests/t00008/t00008.cc",
+ "line": 24
+ },
+ "template_parameters": [
+ {
+ "is_variadic": false,
+ "kind": "template_type",
+ "name": "T",
+ "template_parameters": []
+ },
+ {
+ "is_variadic": false,
+ "kind": "template_template_type",
+ "name": "C<>",
+ "template_parameters": []
+ }
+ ],
+ "type": "class"
+ },
+ {
+ "bases": [],
+ "display_name": "clanguml::t00008::B",
+ "id": "1449136415707203971",
+ "is_abstract": false,
+ "is_nested": false,
+ "is_struct": false,
+ "is_template": false,
+ "is_union": false,
+ "members": [],
+ "methods": [],
+ "name": "B",
+ "namespace": "clanguml::t00008",
+ "template_parameters": [
+ {
+ "is_variadic": false,
+ "kind": "argument",
+ "template_parameters": [],
+ "type": "int"
+ },
+ {
+ "is_variadic": false,
+ "kind": "template_type",
+ "name": "clanguml::t00008::Vector",
+ "template_parameters": []
+ }
+ ],
+ "type": "class"
+ },
+ {
+ "bases": [],
+ "display_name": "clanguml::t00008::D",
+ "id": "1562396858816419857",
+ "is_abstract": false,
+ "is_nested": false,
+ "is_struct": true,
+ "is_template": false,
+ "is_union": false,
+ "members": [
+ {
+ "access": "public",
+ "is_static": false,
+ "name": "ints",
+ "source_location": {
+ "file": "../../tests/t00008/t00008.cc",
+ "line": 29
+ },
+ "type": "B"
+ }
+ ],
+ "methods": [
+ {
+ "access": "public",
+ "is_const": false,
+ "is_defaulted": false,
+ "is_implicit": false,
+ "is_pure_virtual": false,
+ "is_static": false,
+ "is_virtual": false,
+ "name": "add",
+ "parameters": [
+ {
+ "name": "i",
+ "type": "int"
+ }
+ ],
+ "type": "void"
+ },
+ {
+ "access": "public",
+ "is_const": false,
+ "is_defaulted": false,
+ "is_implicit": false,
+ "is_pure_virtual": false,
+ "is_static": false,
+ "is_virtual": false,
+ "name": "D",
+ "parameters": [
+ {
+ "name": "",
+ "type": "std::tuple *"
+ }
+ ],
+ "type": "void"
+ }
+ ],
+ "name": "D",
+ "namespace": "clanguml::t00008",
+ "source_location": {
+ "file": "../../tests/t00008/t00008.cc",
+ "line": 28
+ },
+ "template_parameters": [],
+ "type": "class"
+ },
+ {
+ "bases": [],
+ "display_name": "clanguml::t00008::E",
+ "id": "1787658457052431115",
+ "is_abstract": false,
+ "is_nested": false,
+ "is_struct": true,
+ "is_template": false,
+ "is_union": false,
+ "members": [],
+ "methods": [],
+ "name": "E",
+ "namespace": "clanguml::t00008",
+ "source_location": {
+ "file": "../../tests/t00008/t00008.cc",
+ "line": 36
+ },
+ "template_parameters": [],
+ "type": "class"
+ },
+ {
+ "bases": [],
+ "display_name": "clanguml::t00008::E::nested_template",
+ "id": "1549419203490064906",
+ "is_abstract": false,
+ "is_nested": true,
+ "is_struct": true,
+ "is_template": true,
+ "is_union": false,
+ "members": [],
+ "methods": [
+ {
+ "access": "public",
+ "is_const": false,
+ "is_defaulted": false,
+ "is_implicit": false,
+ "is_pure_virtual": false,
+ "is_static": true,
+ "is_virtual": false,
+ "name": "get",
+ "parameters": [
+ {
+ "name": "d",
+ "type": "ET *"
+ }
+ ],
+ "type": "clanguml::t00008::E::nested_template::DT *"
+ }
+ ],
+ "name": "E::nested_template",
+ "namespace": "clanguml::t00008",
+ "source_location": {
+ "file": "../../tests/t00008/t00008.cc",
+ "line": 37
+ },
+ "template_parameters": [
+ {
+ "is_variadic": false,
+ "kind": "template_type",
+ "name": "ET",
+ "template_parameters": []
+ }
+ ],
+ "type": "class"
+ },
+ {
+ "bases": [],
+ "display_name": "clanguml::t00008::E::nested_template",
+ "id": "33637089897037832",
+ "is_abstract": false,
+ "is_nested": true,
+ "is_struct": true,
+ "is_template": false,
+ "is_union": false,
+ "members": [],
+ "methods": [],
+ "name": "E::nested_template",
+ "namespace": "clanguml::t00008",
+ "source_location": {
+ "file": "../../tests/t00008/t00008.cc",
+ "line": 44
+ },
+ "template_parameters": [
+ {
+ "is_variadic": false,
+ "kind": "argument",
+ "template_parameters": [],
+ "type": "char"
+ }
+ ],
+ "type": "class"
+ }
+ ],
+ "name": "t00008_class",
+ "relationships": [
+ {
+ "access": "public",
+ "destination": "1968575752686868237",
+ "source": "1449136415707203971",
+ "type": "instantiation"
+ },
+ {
+ "access": "public",
+ "destination": "1449136415707203971",
+ "label": "ints",
+ "source": "1562396858816419857",
+ "type": "aggregation"
+ },
+ {
+ "access": "public",
+ "destination": "1787658457052431115",
+ "source": "1549419203490064906",
+ "type": "containment"
+ },
+ {
+ "access": "public",
+ "destination": "1787658457052431115",
+ "source": "33637089897037832",
+ "type": "containment"
+ },
+ {
+ "access": "public",
+ "destination": "1549419203490064906",
+ "source": "33637089897037832",
+ "type": "instantiation"
+ }
+ ],
+ "using_namespace": "clanguml::t00008"
+}
+```
diff --git a/docs/test_cases/t00008_class.svg b/docs/test_cases/t00008_class.svg
index 3056b44d..a185794a 100644
--- a/docs/test_cases/t00008_class.svg
+++ b/docs/test_cases/t00008_class.svg
@@ -1,6 +1,6 @@