Files
clang-uml/docs/test_cases/t00008.md
2022-12-21 19:20:18 +01:00

61 lines
1.2 KiB
Markdown

# t00008 - Template and template template relationships
## Config
```yaml
compilation_database_dir: ..
output_directory: puml
diagrams:
t00008_class:
type: class
glob:
- ../../tests/t00008/t00008.cc
using_namespace:
- clanguml::t00008
include:
namespaces:
- clanguml::t00008
```
## Source code
File t00008.cc
```cpp
#include <array>
#include <vector>
namespace clanguml {
namespace t00008 {
using CMP = bool (*)(const int, const int);
template <typename T, typename P = T, CMP = nullptr, int N = 3> class A {
public:
T value;
T *pointer;
T &reference;
std::vector<P> values;
std::array<int, N> ints;
CMP comparator;
};
template <typename T> struct Vector {
std::vector<T> values;
};
template <typename T, template <typename> typename C> struct B {
C<T> template_template;
};
struct D {
B<int, Vector> ints;
template <typename... Items> D(std::tuple<Items...> * /*items*/) { }
void add(int i) { ints.template_template.values.push_back(i); }
};
} // namespace t00008
} // namespace clanguml
```
## Generated UML diagrams
![t00008_class](./t00008_class.svg "Template and template template relationships")