67 lines
1.2 KiB
Markdown
67 lines
1.2 KiB
Markdown
# t00038 - Template instantiation with unexposed nested templates
|
|
## Config
|
|
```yaml
|
|
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
|
|
```cpp
|
|
#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
|
|

|