# 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": 7, "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": 26, "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": 7, "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": 22, "file": "t00014.cc", "line": 59, "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": 16, "file": "t00014.cc", "line": 61, "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": 24, "file": "t00014.cc", "line": 62, "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": 23, "file": "t00014.cc", "line": 63, "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": 26, "file": "t00014.cc", "line": 64, "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": 65, "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": 16, "file": "t00014.cc", "line": 66, "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": 19, "file": "t00014.cc", "line": 67, "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": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "source_location": { "column": 33, "file": "t00014.cc", "line": 76, "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": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "source_location": { "column": 35, "file": "t00014.cc", "line": 77, "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" } ``` ## Generated GraphML models ```xml clanguml::t00014 class ]]> true class false class ]]> true class >]]> true class ]]> true class ]]> true class ]]> true class ]]> true class ]]> true class ]]> true class ]]> true class ]]> true class >]]> true class ]]> true class ]]> true class ]]> true class ]]> true class ]]> true instantiation public instantiation public instantiation public instantiation public instantiation public instantiation public instantiation public instantiation public instantiation public instantiation public instantiation public instantiation public instantiation public instantiation public instantiation public aggregation bapair private aggregation bapair private aggregation abool private aggregation aboolfloat private aggregation aboolfloat private association afloat private aggregation boolstring private aggregation floatstring private aggregation intstring private aggregation stringstring private aggregation bstringstring private aggregation atfloat private aggregation atfloat private aggregation bs protected aggregation bs2 public dependency public dependency cb public dependency public dependency gcb public aggregation vps public ```