# t20004 - Function template instantiation sequence diagram test case ## Config ```yaml compilation_database_dir: .. output_directory: puml diagrams: t20004_sequence: type: sequence glob: - ../../tests/t20004/t20004.cc include: namespaces: - clanguml::t20004 using_namespace: - clanguml::t20004 start_from: - function: "clanguml::t20004::main()" ``` ## Source code File t20004.cc ```cpp #include namespace clanguml { namespace t20004 { template T m4(T p); template <> [[maybe_unused]] int m4(int p) { return p + 2; } template <> [[maybe_unused]] unsigned long m4(unsigned long p) { return 1000 * p; } template T m3(T p) { return m4(p); } template T m2(T p) { return m3(p); } template <> [[maybe_unused]] std::string m2(std::string p) { return std::string{"m2"} + p; } template T m1(T p) { return m2(p); } template <> [[maybe_unused]] float m1(float p) { return 2 * p; } template <> [[maybe_unused]] unsigned long m1(unsigned long p) { return m4(p); } template <> [[maybe_unused]] std::string m1(std::string p) { return m2(p); } int main() { m1(2.2); m1(100); m1("main"); return m1(0); } } } ``` ## Generated UML diagrams ![t20004_sequence](./t20004_sequence.svg "Function template instantiation sequence diagram test case")