Files
clang-uml/docs/test_cases/t00038.md
2022-03-13 23:36:51 +01:00

1.2 KiB

t00038 - Template instantiation with unexposed nested templates

Config

compilation_database_dir: ..
output_directory: puml
diagrams:
  t00038_class:
    type: class
    generate_packages: true
    glob:
      - ../../tests/t00038/t00038.cc
    using_namespace:
      - clanguml::t00038
    include:
      namespaces:
        - clanguml::t00038

Source code

File t00038.cc

#include <map>
#include <string>
#include <type_traits>
#include <vector>

namespace clanguml {
namespace t00038 {

enum class property_t { property_a, property_b, property_c };

struct A {
};
struct B {
};
struct C {
};

struct key_t {
    std::string key;
};

template <typename T> struct map;

template <>
struct map<std::integral_constant<clanguml::t00038::property_t,
    clanguml::t00038::property_t::property_a>> : A {
};

template <>
struct map<std::vector<
    std::integral_constant<t00038::property_t, t00038::property_t::property_b>>>
    : B {
};

template <>
struct map<std::map<key_t,
    std::vector<std::integral_constant<property_t, property_t::property_c>>>>
    : C {
};

} // namespace t00038
} // namespace clanguml

Generated UML diagrams

t00038_class