# t00014 - Alias template instantiation ## Config ```yaml diagrams: t00014_class: type: class glob: - t00014.cc using_namespace: clanguml::t00014 include: namespaces: - clanguml::t00014 plantuml: before: - left to right direction mermaid: before: - direction LR ``` ## Source code File `tests/t00014/t00014.cc` ```cpp #include #include #include #include #include #include /** * These should not be include as they are not * in ns clanguml::t00014 */ template struct clanguml_t00014_A { T value; }; using clanguml_t00014_AString = clanguml_t00014_A; namespace clanguml { namespace t00014 { template struct A { T t; P p; }; struct B { std::string value; }; template using AString = A; template using AStringPtr = A>; template using PairPairBA = std::pair>, long>; template using VectorPtr = std::unique_ptr>; template using APtr = std::unique_ptr>; template using ASharedPtr = std::shared_ptr>; template using AAPtr = std::unique_ptr, A>>; template using SimpleCallback = std::function; template using GenericCallback = std::function; using VoidCallback = GenericCallback; using BVector = std::vector; using BVector2 = BVector; using AIntString = AString; using ACharString = AString; using AStringString = AString; using BStringString = AStringString; template class R { using AWCharString = AString; PairPairBA bapair; APtr abool; AAPtr aboolfloat; ASharedPtr afloat; A boolstring; AStringPtr floatstring; AIntString intstring; AStringString stringstring; BStringString bstringstring; AAPtr atfloat; protected: BVector bs; public: BVector2 bs2; SimpleCallback cb; GenericCallback gcb; VoidCallback vcb; VectorPtr vps; }; } // namespace t00014 } // namespace clanguml ``` ## Generated PlantUML diagrams ![t00014_class](./t00014_class.svg "Alias template instantiation") ## Generated Mermaid diagrams ![t00014_class](./t00014_class_mermaid.svg "Alias template instantiation") ## Generated JSON models ```json { "diagram_type": "class", "elements": [ { "bases": [], "display_name": "A", "id": "6127124633338685220", "is_abstract": false, "is_nested": false, "is_struct": true, "is_template": true, "is_union": false, "members": [ { "access": "public", "is_static": false, "name": "t", "source_location": { "column": 7, "file": "t00014.cc", "line": 22, "translation_unit": "t00014.cc" }, "type": "T" }, { "access": "public", "is_static": false, "name": "p", "source_location": { "column": 7, "file": "t00014.cc", "line": 23, "translation_unit": "t00014.cc" }, "type": "P" } ], "methods": [], "name": "A", "namespace": "clanguml::t00014", "source_location": { "column": 42, "file": "t00014.cc", "line": 21, "translation_unit": "t00014.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": "B", "id": "7473088098336348050", "is_abstract": false, "is_nested": false, "is_struct": true, "is_template": false, "is_union": false, "members": [ { "access": "public", "is_static": false, "name": "value", "source_location": { "column": 17, "file": "t00014.cc", "line": 27, "translation_unit": "t00014.cc" }, "type": "std::string" } ], "methods": [], "name": "B", "namespace": "clanguml::t00014", "source_location": { "column": 8, "file": "t00014.cc", "line": 26, "translation_unit": "t00014.cc" }, "template_parameters": [], "type": "class" }, { "bases": [], "display_name": "A", "id": "17491102824696068567", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "source_location": { "column": 23, "file": "t00014.cc", "line": 30, "translation_unit": "t00014.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": "A>", "id": "7578341869927946377", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "source_location": { "column": 23, "file": "t00014.cc", "line": 31, "translation_unit": "t00014.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "template_type", "name": "T", "template_parameters": [] }, { "is_variadic": false, "kind": "argument", "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "std::string" } ], "type": "std::unique_ptr" } ], "type": "class" }, { "bases": [], "display_name": "A", "id": "13600051123955725337", "is_abstract": false, "is_nested": false, "is_struct": true, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "source_location": { "column": 1, "file": "t00014.cc", "line": 34, "translation_unit": "t00014.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "long" }, { "is_variadic": false, "kind": "template_type", "name": "T", "template_parameters": [] } ], "type": "class" }, { "bases": [], "display_name": "A", "id": "16141324540142825631", "is_abstract": false, "is_nested": false, "is_struct": true, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "source_location": { "column": 20, "file": "t00014.cc", "line": 37, "translation_unit": "t00014.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "double" }, { "is_variadic": false, "kind": "template_type", "name": "T", "template_parameters": [] } ], "type": "class" }, { "bases": [], "display_name": "A", "id": "7252458562105886987", "is_abstract": false, "is_nested": false, "is_struct": true, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "source_location": { "column": 1, "file": "t00014.cc", "line": 41, "translation_unit": "t00014.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "long" }, { "is_variadic": false, "kind": "template_type", "name": "U", "template_parameters": [] } ], "type": "class" }, { "bases": [], "display_name": "A", "id": "3031184166627445092", "is_abstract": false, "is_nested": false, "is_struct": true, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "source_location": { "column": 1, "file": "t00014.cc", "line": 34, "translation_unit": "t00014.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "long" }, { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "bool" } ], "type": "class" }, { "bases": [], "display_name": "A", "id": "16656107004201043317", "is_abstract": false, "is_nested": false, "is_struct": true, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "source_location": { "column": 20, "file": "t00014.cc", "line": 37, "translation_unit": "t00014.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "double" }, { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "bool" } ], "type": "class" }, { "bases": [], "display_name": "A", "id": "415827946341273846", "is_abstract": false, "is_nested": false, "is_struct": true, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "source_location": { "column": 1, "file": "t00014.cc", "line": 41, "translation_unit": "t00014.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "long" }, { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "float" } ], "type": "class" }, { "bases": [], "display_name": "A", "id": "1582154030263692708", "is_abstract": false, "is_nested": false, "is_struct": true, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "source_location": { "column": 20, "file": "t00014.cc", "line": 38, "translation_unit": "t00014.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "double" }, { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "float" } ], "type": "class" }, { "bases": [], "display_name": "A", "id": "7167525692531209473", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "source_location": { "column": 42, "file": "t00014.cc", "line": 21, "translation_unit": "t00014.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "bool" }, { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "std::string" } ], "type": "class" }, { "bases": [], "display_name": "A>", "id": "14013861000085937293", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "source_location": { "column": 23, "file": "t00014.cc", "line": 31, "translation_unit": "t00014.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "float" }, { "is_variadic": false, "kind": "argument", "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "std::string" } ], "type": "std::unique_ptr" } ], "type": "class" }, { "bases": [], "display_name": "A", "id": "7096971529686780666", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "source_location": { "column": 23, "file": "t00014.cc", "line": 30, "translation_unit": "t00014.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "int" }, { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "std::string" } ], "type": "class" }, { "bases": [], "display_name": "A", "id": "8955619965084495806", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "source_location": { "column": 23, "file": "t00014.cc", "line": 30, "translation_unit": "t00014.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "std::string" }, { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "std::string" } ], "type": "class" }, { "bases": [], "display_name": "A", "id": "2724496792509139121", "is_abstract": false, "is_nested": false, "is_struct": true, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "source_location": { "column": 11, "file": "", "line": 111, "translation_unit": "t00014.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "char" }, { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "std::string" } ], "type": "class" }, { "bases": [], "display_name": "A", "id": "11111017193279157322", "is_abstract": false, "is_nested": false, "is_struct": true, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "source_location": { "column": 11, "file": "", "line": 111, "translation_unit": "t00014.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "wchar_t" }, { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "std::string" } ], "type": "class" }, { "bases": [], "display_name": "R", "id": "14065705372679465152", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [ { "access": "private", "is_static": false, "name": "bapair", "source_location": { "column": 22, "file": "t00014.cc", "line": 59, "translation_unit": "t00014.cc" }, "type": "PairPairBA" }, { "access": "private", "is_static": false, "name": "abool", "source_location": { "column": 16, "file": "t00014.cc", "line": 61, "translation_unit": "t00014.cc" }, "type": "APtr" }, { "access": "private", "is_static": false, "name": "aboolfloat", "source_location": { "column": 24, "file": "t00014.cc", "line": 62, "translation_unit": "t00014.cc" }, "type": "AAPtr" }, { "access": "private", "is_static": false, "name": "afloat", "source_location": { "column": 23, "file": "t00014.cc", "line": 63, "translation_unit": "t00014.cc" }, "type": "ASharedPtr" }, { "access": "private", "is_static": false, "name": "boolstring", "source_location": { "column": 26, "file": "t00014.cc", "line": 64, "translation_unit": "t00014.cc" }, "type": "A" }, { "access": "private", "is_static": false, "name": "floatstring", "source_location": { "column": 23, "file": "t00014.cc", "line": 65, "translation_unit": "t00014.cc" }, "type": "AStringPtr" }, { "access": "private", "is_static": false, "name": "intstring", "source_location": { "column": 16, "file": "t00014.cc", "line": 66, "translation_unit": "t00014.cc" }, "type": "AIntString" }, { "access": "private", "is_static": false, "name": "stringstring", "source_location": { "column": 19, "file": "t00014.cc", "line": 67, "translation_unit": "t00014.cc" }, "type": "AStringString" }, { "access": "private", "is_static": false, "name": "bstringstring", "source_location": { "column": 19, "file": "t00014.cc", "line": 68, "translation_unit": "t00014.cc" }, "type": "BStringString" }, { "access": "private", "is_static": false, "name": "atfloat", "source_location": { "column": 21, "file": "t00014.cc", "line": 69, "translation_unit": "t00014.cc" }, "type": "AAPtr" }, { "access": "protected", "is_static": false, "name": "bs", "source_location": { "column": 13, "file": "t00014.cc", "line": 72, "translation_unit": "t00014.cc" }, "type": "BVector" }, { "access": "public", "is_static": false, "name": "bs2", "source_location": { "column": 14, "file": "t00014.cc", "line": 75, "translation_unit": "t00014.cc" }, "type": "BVector2" }, { "access": "public", "is_static": false, "name": "cb", "source_location": { "column": 33, "file": "t00014.cc", "line": 76, "translation_unit": "t00014.cc" }, "type": "SimpleCallback" }, { "access": "public", "is_static": false, "name": "gcb", "source_location": { "column": 35, "file": "t00014.cc", "line": 77, "translation_unit": "t00014.cc" }, "type": "GenericCallback" }, { "access": "public", "is_static": false, "name": "vcb", "source_location": { "column": 18, "file": "t00014.cc", "line": 78, "translation_unit": "t00014.cc" }, "type": "VoidCallback" }, { "access": "public", "is_static": false, "name": "vps", "source_location": { "column": 18, "file": "t00014.cc", "line": 79, "translation_unit": "t00014.cc" }, "type": "VectorPtr" } ], "methods": [], "name": "R", "namespace": "clanguml::t00014", "source_location": { "column": 29, "file": "t00014.cc", "line": 56, "translation_unit": "t00014.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "template_type", "name": "T", "template_parameters": [] } ], "type": "class" } ], "name": "t00014_class", "package_type": "namespace", "relationships": [ { "access": "public", "destination": "6127124633338685220", "source": "17491102824696068567", "type": "instantiation" }, { "access": "public", "destination": "6127124633338685220", "source": "7578341869927946377", "type": "instantiation" }, { "access": "public", "destination": "6127124633338685220", "source": "13600051123955725337", "type": "instantiation" }, { "access": "public", "destination": "6127124633338685220", "source": "16141324540142825631", "type": "instantiation" }, { "access": "public", "destination": "13600051123955725337", "source": "7252458562105886987", "type": "instantiation" }, { "access": "public", "destination": "13600051123955725337", "source": "3031184166627445092", "type": "instantiation" }, { "access": "public", "destination": "16141324540142825631", "source": "16656107004201043317", "type": "instantiation" }, { "access": "public", "destination": "13600051123955725337", "source": "415827946341273846", "type": "instantiation" }, { "access": "public", "destination": "16141324540142825631", "source": "1582154030263692708", "type": "instantiation" }, { "access": "public", "destination": "17491102824696068567", "source": "7167525692531209473", "type": "instantiation" }, { "access": "public", "destination": "7578341869927946377", "source": "14013861000085937293", "type": "instantiation" }, { "access": "public", "destination": "17491102824696068567", "source": "7096971529686780666", "type": "instantiation" }, { "access": "public", "destination": "17491102824696068567", "source": "8955619965084495806", "type": "instantiation" }, { "access": "public", "destination": "17491102824696068567", "source": "2724496792509139121", "type": "instantiation" }, { "access": "public", "destination": "17491102824696068567", "source": "11111017193279157322", "type": "instantiation" }, { "access": "private", "destination": "7473088098336348050", "label": "bapair", "source": "14065705372679465152", "type": "aggregation" }, { "access": "private", "destination": "3031184166627445092", "label": "bapair", "source": "14065705372679465152", "type": "aggregation" }, { "access": "private", "destination": "16656107004201043317", "label": "abool", "source": "14065705372679465152", "type": "aggregation" }, { "access": "private", "destination": "16656107004201043317", "label": "aboolfloat", "source": "14065705372679465152", "type": "aggregation" }, { "access": "private", "destination": "415827946341273846", "label": "aboolfloat", "source": "14065705372679465152", "type": "aggregation" }, { "access": "private", "destination": "1582154030263692708", "label": "afloat", "source": "14065705372679465152", "type": "association" }, { "access": "private", "destination": "7167525692531209473", "label": "boolstring", "source": "14065705372679465152", "type": "aggregation" }, { "access": "private", "destination": "14013861000085937293", "label": "floatstring", "source": "14065705372679465152", "type": "aggregation" }, { "access": "private", "destination": "7096971529686780666", "label": "intstring", "source": "14065705372679465152", "type": "aggregation" }, { "access": "private", "destination": "8955619965084495806", "label": "stringstring", "source": "14065705372679465152", "type": "aggregation" }, { "access": "private", "destination": "8955619965084495806", "label": "bstringstring", "source": "14065705372679465152", "type": "aggregation" }, { "access": "private", "destination": "16141324540142825631", "label": "atfloat", "source": "14065705372679465152", "type": "aggregation" }, { "access": "private", "destination": "415827946341273846", "label": "atfloat", "source": "14065705372679465152", "type": "aggregation" }, { "access": "protected", "destination": "7473088098336348050", "label": "bs", "source": "14065705372679465152", "type": "aggregation" }, { "access": "public", "destination": "7473088098336348050", "label": "bs2", "source": "14065705372679465152", "type": "aggregation" }, { "access": "public", "destination": "2724496792509139121", "source": "14065705372679465152", "type": "dependency" }, { "access": "public", "destination": "2724496792509139121", "label": "cb", "source": "14065705372679465152", "type": "dependency" }, { "access": "public", "destination": "11111017193279157322", "source": "14065705372679465152", "type": "dependency" }, { "access": "public", "destination": "11111017193279157322", "label": "gcb", "source": "14065705372679465152", "type": "dependency" }, { "access": "public", "destination": "7473088098336348050", "label": "vps", "source": "14065705372679465152", "type": "aggregation" } ], "using_namespace": "clanguml::t00014" } ```