# 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; 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 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": { "column": 7, "file": "../../tests/t00014/t00014.cc", "line": 22, "translation_unit": "../../tests/t00014/t00014.cc" }, "type": "T" }, { "access": "public", "is_static": false, "name": "p", "source_location": { "column": 7, "file": "../../tests/t00014/t00014.cc", "line": 23, "translation_unit": "../../tests/t00014/t00014.cc" }, "type": "P" } ], "methods": [], "name": "A", "namespace": "clanguml::t00014", "source_location": { "column": 42, "file": "../../tests/t00014/t00014.cc", "line": 21, "translation_unit": "../../tests/t00014/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": "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": { "column": 17, "file": "../../tests/t00014/t00014.cc", "line": 27, "translation_unit": "../../tests/t00014/t00014.cc" }, "type": "std::string" } ], "methods": [], "name": "B", "namespace": "clanguml::t00014", "source_location": { "column": 8, "file": "../../tests/t00014/t00014.cc", "line": 26, "translation_unit": "../../tests/t00014/t00014.cc" }, "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", "source_location": { "column": 42, "file": "../../tests/t00014/t00014.cc", "line": 21, "translation_unit": "../../tests/t00014/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": "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", "source_location": { "column": 42, "file": "../../tests/t00014/t00014.cc", "line": 21, "translation_unit": "../../tests/t00014/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": "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", "source_location": { "column": 12, "file": "../../../../../../usr/include/c++/12/bits/stl_iterator.h", "line": 2611, "translation_unit": "../../tests/t00014/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": "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", "source_location": { "column": 11, "file": "../../../../../../usr/include/c++/12/bits/unique_ptr.h", "line": 269, "translation_unit": "../../tests/t00014/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": "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", "source_location": { "column": 12, "file": "../../../../../../usr/include/c++/12/bits/stl_iterator.h", "line": 2611, "translation_unit": "../../tests/t00014/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": "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", "source_location": { "column": 12, "file": "../../../../../../usr/include/c++/12/bits/stl_iterator.h", "line": 2611, "translation_unit": "../../tests/t00014/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": "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", "source_location": { "column": 11, "file": "../../../../../../usr/include/c++/12/bits/unique_ptr.h", "line": 269, "translation_unit": "../../tests/t00014/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": "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", "source_location": { "column": 12, "file": "../../../../../../usr/include/c++/12/bits/stl_iterator.h", "line": 2611, "translation_unit": "../../tests/t00014/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": "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", "source_location": { "column": 11, "file": "../../../../../../usr/include/c++/12/bits/shared_ptr.h", "line": 175, "translation_unit": "../../tests/t00014/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": "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", "source_location": { "column": 42, "file": "../../tests/t00014/t00014.cc", "line": 21, "translation_unit": "../../tests/t00014/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": "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", "source_location": { "column": 42, "file": "../../tests/t00014/t00014.cc", "line": 21, "translation_unit": "../../tests/t00014/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": "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", "source_location": { "column": 42, "file": "../../tests/t00014/t00014.cc", "line": 21, "translation_unit": "../../tests/t00014/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": "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", "source_location": { "column": 42, "file": "../../tests/t00014/t00014.cc", "line": 21, "translation_unit": "../../tests/t00014/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": "clanguml::t00014::A", "id": "340562099063642390", "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": "../../../../../../usr/include/c++/12/bits/std_function.h", "line": 111, "translation_unit": "../../tests/t00014/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": "clanguml::t00014::A", "id": "1388877149159894665", "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": "../../../../../../usr/include/c++/12/bits/std_function.h", "line": 111, "translation_unit": "../../tests/t00014/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": "clanguml::t00014::R", "id": "1758213171584933144", "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": "../../tests/t00014/t00014.cc", "line": 59, "translation_unit": "../../tests/t00014/t00014.cc" }, "type": "PairPairBA" }, { "access": "private", "is_static": false, "name": "abool", "source_location": { "column": 16, "file": "../../tests/t00014/t00014.cc", "line": 61, "translation_unit": "../../tests/t00014/t00014.cc" }, "type": "APtr" }, { "access": "private", "is_static": false, "name": "aboolfloat", "source_location": { "column": 24, "file": "../../tests/t00014/t00014.cc", "line": 62, "translation_unit": "../../tests/t00014/t00014.cc" }, "type": "AAPtr" }, { "access": "private", "is_static": false, "name": "afloat", "source_location": { "column": 23, "file": "../../tests/t00014/t00014.cc", "line": 63, "translation_unit": "../../tests/t00014/t00014.cc" }, "type": "ASharedPtr" }, { "access": "private", "is_static": false, "name": "boolstring", "source_location": { "column": 26, "file": "../../tests/t00014/t00014.cc", "line": 64, "translation_unit": "../../tests/t00014/t00014.cc" }, "type": "A" }, { "access": "private", "is_static": false, "name": "floatstring", "source_location": { "column": 23, "file": "../../tests/t00014/t00014.cc", "line": 65, "translation_unit": "../../tests/t00014/t00014.cc" }, "type": "AStringPtr" }, { "access": "private", "is_static": false, "name": "intstring", "source_location": { "column": 16, "file": "../../tests/t00014/t00014.cc", "line": 66, "translation_unit": "../../tests/t00014/t00014.cc" }, "type": "clanguml::t00014::AIntString" }, { "access": "private", "is_static": false, "name": "stringstring", "source_location": { "column": 19, "file": "../../tests/t00014/t00014.cc", "line": 67, "translation_unit": "../../tests/t00014/t00014.cc" }, "type": "clanguml::t00014::AStringString" }, { "access": "private", "is_static": false, "name": "bstringstring", "source_location": { "column": 19, "file": "../../tests/t00014/t00014.cc", "line": 68, "translation_unit": "../../tests/t00014/t00014.cc" }, "type": "clanguml::t00014::BStringString" }, { "access": "private", "is_static": false, "name": "atfloat", "source_location": { "column": 21, "file": "../../tests/t00014/t00014.cc", "line": 69, "translation_unit": "../../tests/t00014/t00014.cc" }, "type": "AAPtr" }, { "access": "protected", "is_static": false, "name": "bs", "source_location": { "column": 13, "file": "../../tests/t00014/t00014.cc", "line": 72, "translation_unit": "../../tests/t00014/t00014.cc" }, "type": "clanguml::t00014::BVector" }, { "access": "public", "is_static": false, "name": "bs2", "source_location": { "column": 14, "file": "../../tests/t00014/t00014.cc", "line": 75, "translation_unit": "../../tests/t00014/t00014.cc" }, "type": "clanguml::t00014::BVector2" }, { "access": "public", "is_static": false, "name": "cb", "source_location": { "column": 33, "file": "../../tests/t00014/t00014.cc", "line": 76, "translation_unit": "../../tests/t00014/t00014.cc" }, "type": "SimpleCallback" }, { "access": "public", "is_static": false, "name": "gcb", "source_location": { "column": 35, "file": "../../tests/t00014/t00014.cc", "line": 77, "translation_unit": "../../tests/t00014/t00014.cc" }, "type": "GenericCallback" }, { "access": "public", "is_static": false, "name": "vcb", "source_location": { "column": 18, "file": "../../tests/t00014/t00014.cc", "line": 78, "translation_unit": "../../tests/t00014/t00014.cc" }, "type": "clanguml::t00014::VoidCallback" }, { "access": "public", "is_static": false, "name": "vps", "source_location": { "column": 18, "file": "../../tests/t00014/t00014.cc", "line": 79, "translation_unit": "../../tests/t00014/t00014.cc" }, "type": "VectorPtr" } ], "methods": [], "name": "R", "namespace": "clanguml::t00014", "source_location": { "column": 29, "file": "../../tests/t00014/t00014.cc", "line": 56, "translation_unit": "../../tests/t00014/t00014.cc" }, "template_parameters": [ { "is_variadic": false, "kind": "template_type", "name": "T", "template_parameters": [] } ], "type": "class" } ], "metadata": { "clang_uml_version": "0.3.8-32-ge830195", "llvm_version": "Ubuntu clang version 15.0.7", "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": "1700006390494465667", "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": "340562099063642390", "type": "instantiation" }, { "access": "public", "destination": "2186387853087008570", "source": "1388877149159894665", "type": "instantiation" }, { "access": "private", "destination": "934136012292043506", "label": "bapair", "source": "1758213171584933144", "type": "aggregation" }, { "access": "private", "destination": "378898020828430636", "label": "bapair", "source": "1758213171584933144", "type": "aggregation" }, { "access": "private", "destination": "2082013375525130414", "label": "abool", "source": "1758213171584933144", "type": "aggregation" }, { "access": "private", "destination": "2082013375525130414", "label": "aboolfloat", "source": "1758213171584933144", "type": "aggregation" }, { "access": "private", "destination": "51978493292659230", "label": "aboolfloat", "source": "1758213171584933144", "type": "aggregation" }, { "access": "private", "destination": "197769253782961588", "label": "afloat", "source": "1758213171584933144", "type": "association" }, { "access": "private", "destination": "895940711566401184", "label": "boolstring", "source": "1758213171584933144", "type": "aggregation" }, { "access": "private", "destination": "1751732625010742161", "label": "floatstring", "source": "1758213171584933144", "type": "aggregation" }, { "access": "private", "destination": "887121441210847583", "label": "intstring", "source": "1758213171584933144", "type": "aggregation" }, { "access": "private", "destination": "1119452495635561975", "label": "stringstring", "source": "1758213171584933144", "type": "aggregation" }, { "access": "private", "destination": "1119452495635561975", "label": "bstringstring", "source": "1758213171584933144", "type": "aggregation" }, { "access": "private", "destination": "2017665567517853203", "label": "atfloat", "source": "1758213171584933144", "type": "aggregation" }, { "access": "private", "destination": "51978493292659230", "label": "atfloat", "source": "1758213171584933144", "type": "aggregation" }, { "access": "protected", "destination": "934136012292043506", "label": "bs", "source": "1758213171584933144", "type": "aggregation" }, { "access": "public", "destination": "934136012292043506", "label": "bs2", "source": "1758213171584933144", "type": "aggregation" }, { "access": "public", "destination": "340562099063642390", "source": "1758213171584933144", "type": "dependency" }, { "access": "public", "destination": "1388877149159894665", "source": "1758213171584933144", "type": "dependency" }, { "access": "public", "destination": "934136012292043506", "label": "vps", "source": "1758213171584933144", "type": "aggregation" } ], "using_namespace": "clanguml::t00014" } ```