# t00014 - Alias template instantiation ## Config ```yaml compilation_database_dir: .. output_directory: puml diagrams: t00014_class: type: class glob: - ../../tests/t00014/t00014.cc using_namespace: - clanguml::t00014 include: namespaces: - clanguml::t00014 plantuml: before: - left to right direction ``` ## Source code File 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; class R { using AWCharString = AString; PairPairBA bapair; APtr abool; AAPtr aboolfloat; ASharedPtr afloat; A boolstring; AStringPtr floatstring; AIntString intstring; AStringString stringstring; BStringString bstringstring; protected: BVector bs; public: BVector2 bs2; SimpleCallback cb; GenericCallback gcb; VoidCallback vcb; VectorPtr vps; }; } // namespace t00014 } // namespace clanguml ``` ## Generated UML diagrams ![t00014_class](./t00014_class.svg "Alias template instantiation") ## Generated JSON models ```json { "diagram_type": "class", "elements": [ { "bases": [], "display_name": "clanguml::t00014::A", "id": "765890579167335652", "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": { "file": "../../tests/t00014/t00014.cc", "line": 22 }, "type": "T" }, { "access": "public", "is_static": false, "name": "p", "source_location": { "file": "../../tests/t00014/t00014.cc", "line": 23 }, "type": "P" } ], "methods": [], "name": "A", "namespace": "clanguml::t00014", "source_location": { "file": "../../tests/t00014/t00014.cc", "line": 21 }, "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": "clanguml::t00014::B", "id": "934136012292043506", "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": { "file": "../../tests/t00014/t00014.cc", "line": 27 }, "type": "std::string" } ], "methods": [], "name": "B", "namespace": "clanguml::t00014", "source_location": { "file": "../../tests/t00014/t00014.cc", "line": 26 }, "template_parameters": [], "type": "class" }, { "bases": [], "display_name": "clanguml::t00014::A", "id": "2186387853087008570", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "T" }, { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "std::string" } ], "type": "class" }, { "bases": [], "display_name": "clanguml::t00014::A>", "id": "947292733740993297", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "T" }, { "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": "clanguml::t00014::A", "id": "1700006390494465667", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "long" }, { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "T" } ], "type": "class" }, { "bases": [], "display_name": "clanguml::t00014::A", "id": "2017665567517853203", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "double" }, { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "T" } ], "type": "class" }, { "bases": [], "display_name": "clanguml::t00014::A", "id": "906557320263235873", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "template_parameters": [ { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "long" }, { "is_variadic": false, "kind": "argument", "template_parameters": [], "type": "U" } ], "type": "class" }, { "bases": [], "display_name": "clanguml::t00014::A", "id": "378898020828430636", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "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": "clanguml::t00014::A", "id": "2082013375525130414", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "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": "clanguml::t00014::A", "id": "51978493292659230", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "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": "clanguml::t00014::A", "id": "197769253782961588", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "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": "clanguml::t00014::A", "id": "895940711566401184", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "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": "clanguml::t00014::A>", "id": "1751732625010742161", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "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": "clanguml::t00014::A", "id": "887121441210847583", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "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": "clanguml::t00014::A", "id": "1119452495635561975", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": true, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "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": "clanguml::t00014::A", "id": "640294848489463071", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "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": "clanguml::t00014::A", "id": "139599686499155694", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [], "methods": [], "name": "A", "namespace": "clanguml::t00014", "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": "clanguml::t00014::R", "id": "1192822659863756768", "is_abstract": false, "is_nested": false, "is_struct": false, "is_template": false, "is_union": false, "members": [ { "access": "private", "is_static": false, "name": "bapair", "source_location": { "file": "../../tests/t00014/t00014.cc", "line": 58 }, "type": "PairPairBA" }, { "access": "private", "is_static": false, "name": "abool", "source_location": { "file": "../../tests/t00014/t00014.cc", "line": 60 }, "type": "APtr" }, { "access": "private", "is_static": false, "name": "aboolfloat", "source_location": { "file": "../../tests/t00014/t00014.cc", "line": 61 }, "type": "AAPtr" }, { "access": "private", "is_static": false, "name": "afloat", "source_location": { "file": "../../tests/t00014/t00014.cc", "line": 62 }, "type": "ASharedPtr" }, { "access": "private", "is_static": false, "name": "boolstring", "source_location": { "file": "../../tests/t00014/t00014.cc", "line": 63 }, "type": "A" }, { "access": "private", "is_static": false, "name": "floatstring", "source_location": { "file": "../../tests/t00014/t00014.cc", "line": 64 }, "type": "AStringPtr" }, { "access": "private", "is_static": false, "name": "intstring", "source_location": { "file": "../../tests/t00014/t00014.cc", "line": 65 }, "type": "clanguml::t00014::AIntString" }, { "access": "private", "is_static": false, "name": "stringstring", "source_location": { "file": "../../tests/t00014/t00014.cc", "line": 66 }, "type": "clanguml::t00014::AStringString" }, { "access": "private", "is_static": false, "name": "bstringstring", "source_location": { "file": "../../tests/t00014/t00014.cc", "line": 67 }, "type": "clanguml::t00014::BStringString" }, { "access": "protected", "is_static": false, "name": "bs", "source_location": { "file": "../../tests/t00014/t00014.cc", "line": 70 }, "type": "clanguml::t00014::BVector" }, { "access": "public", "is_static": false, "name": "bs2", "source_location": { "file": "../../tests/t00014/t00014.cc", "line": 73 }, "type": "clanguml::t00014::BVector2" }, { "access": "public", "is_static": false, "name": "cb", "source_location": { "file": "../../tests/t00014/t00014.cc", "line": 74 }, "type": "SimpleCallback" }, { "access": "public", "is_static": false, "name": "gcb", "source_location": { "file": "../../tests/t00014/t00014.cc", "line": 75 }, "type": "GenericCallback" }, { "access": "public", "is_static": false, "name": "vcb", "source_location": { "file": "../../tests/t00014/t00014.cc", "line": 76 }, "type": "clanguml::t00014::VoidCallback" }, { "access": "public", "is_static": false, "name": "vps", "source_location": { "file": "../../tests/t00014/t00014.cc", "line": 77 }, "type": "VectorPtr" } ], "methods": [], "name": "R", "namespace": "clanguml::t00014", "source_location": { "file": "../../tests/t00014/t00014.cc", "line": 55 }, "template_parameters": [], "type": "class" } ], "metadata": { "clang_uml_version": "0.3.3-24-ge2a6b81", "llvm_version": "Ubuntu clang version 15.0.6", "schema_version": 1 }, "name": "t00014_class", "relationships": [ { "access": "public", "destination": "765890579167335652", "source": "2186387853087008570", "type": "instantiation" }, { "access": "public", "destination": "765890579167335652", "source": "947292733740993297", "type": "instantiation" }, { "access": "public", "destination": "765890579167335652", "source": "1700006390494465667", "type": "instantiation" }, { "access": "public", "destination": "765890579167335652", "source": "2017665567517853203", "type": "instantiation" }, { "access": "public", "destination": "765890579167335652", "source": "906557320263235873", "type": "instantiation" }, { "access": "public", "destination": "1700006390494465667", "source": "378898020828430636", "type": "instantiation" }, { "access": "public", "destination": "2017665567517853203", "source": "2082013375525130414", "type": "instantiation" }, { "access": "public", "destination": "1700006390494465667", "source": "51978493292659230", "type": "instantiation" }, { "access": "public", "destination": "2017665567517853203", "source": "197769253782961588", "type": "instantiation" }, { "access": "public", "destination": "2186387853087008570", "source": "895940711566401184", "type": "instantiation" }, { "access": "public", "destination": "947292733740993297", "source": "1751732625010742161", "type": "instantiation" }, { "access": "public", "destination": "2186387853087008570", "source": "887121441210847583", "type": "instantiation" }, { "access": "public", "destination": "2186387853087008570", "source": "1119452495635561975", "type": "instantiation" }, { "access": "public", "destination": "2186387853087008570", "source": "640294848489463071", "type": "instantiation" }, { "access": "public", "destination": "2186387853087008570", "source": "139599686499155694", "type": "instantiation" }, { "access": "public", "destination": "378898020828430636", "source": "1192822659863756768", "type": "dependency" }, { "access": "private", "destination": "934136012292043506", "label": "bapair", "source": "1192822659863756768", "type": "aggregation" }, { "access": "private", "destination": "378898020828430636", "label": "bapair", "source": "1192822659863756768", "type": "aggregation" }, { "access": "public", "destination": "2082013375525130414", "source": "1192822659863756768", "type": "dependency" }, { "access": "private", "destination": "2082013375525130414", "label": "abool", "source": "1192822659863756768", "type": "aggregation" }, { "access": "public", "destination": "51978493292659230", "source": "1192822659863756768", "type": "dependency" }, { "access": "private", "destination": "2082013375525130414", "label": "aboolfloat", "source": "1192822659863756768", "type": "aggregation" }, { "access": "private", "destination": "51978493292659230", "label": "aboolfloat", "source": "1192822659863756768", "type": "aggregation" }, { "access": "public", "destination": "197769253782961588", "source": "1192822659863756768", "type": "dependency" }, { "access": "private", "destination": "197769253782961588", "label": "afloat", "source": "1192822659863756768", "type": "association" }, { "access": "private", "destination": "895940711566401184", "label": "boolstring", "source": "1192822659863756768", "type": "aggregation" }, { "access": "private", "destination": "1751732625010742161", "label": "floatstring", "source": "1192822659863756768", "type": "aggregation" }, { "access": "private", "destination": "887121441210847583", "label": "intstring", "source": "1192822659863756768", "type": "aggregation" }, { "access": "private", "destination": "1119452495635561975", "label": "stringstring", "source": "1192822659863756768", "type": "aggregation" }, { "access": "private", "destination": "1119452495635561975", "label": "bstringstring", "source": "1192822659863756768", "type": "aggregation" }, { "access": "protected", "destination": "934136012292043506", "label": "bs", "source": "1192822659863756768", "type": "aggregation" }, { "access": "public", "destination": "934136012292043506", "label": "bs2", "source": "1192822659863756768", "type": "aggregation" }, { "access": "public", "destination": "640294848489463071", "source": "1192822659863756768", "type": "dependency" }, { "access": "public", "destination": "139599686499155694", "source": "1192822659863756768", "type": "dependency" }, { "access": "public", "destination": "934136012292043506", "label": "vps", "source": "1192822659863756768", "type": "aggregation" } ], "using_namespace": "clanguml::t00014" } ```