Files
clang-uml/docs/test_cases/t00044.md
2022-06-07 23:14:12 +02:00

60 lines
1.4 KiB
Markdown

# t00044 - Test case for inner type aliases with parent class template args
## Config
```yaml
compilation_database_dir: ..
output_directory: puml
diagrams:
t00044_class:
type: class
generate_packages: true
glob:
- ../../tests/t00044/t00044.cc
using_namespace:
- clanguml::t00044
include:
namespaces:
- clanguml::t00044
```
## Source code
File t00044.cc
```cpp
// Inspired by skypjack/entt signal handlers
// This test case checks that at least clang-uml does not crash on this code
namespace clanguml::t00044 {
template <typename T> class sink;
template <typename T, typename A> class signal_handler;
template <typename Ret, typename... Args, typename A>
class sink<signal_handler<Ret(Args...), A>> {
using signal_t = signal_handler<Ret(Args...), A>;
public:
sink(signal_t &sh)
: signal{&sh}
{
}
private:
signal_t *signal;
};
template <typename Ret, typename... Args, typename A>
class signal_handler<Ret(Args...), A> {
};
template <typename Ret, typename... Args, typename A>
sink(signal_handler<Ret(Args...), A> &)
-> sink<signal_handler<Ret(Args...), A>>;
signal_handler<void(int), bool> int_handler;
sink sink1{int_handler};
} // namespace clanguml::t00044
```
## Generated UML diagrams
![t00044_class](./t00044_class.svg "Test case for inner type aliases with parent class template args")