#include namespace clanguml { namespace t00052 { class A { public: template T a(T p) { return p; } template void aa(F &&f, Q q) { f(q); } }; template class B { public: T b(T t) { return t; } template T bb(F &&f, T t) { return f(t); } }; template class C { template T c(P p) { return static_cast(p); } }; template <> template <> int C::c(double p) { return std::floor(p); } struct R { A a; B b; C c; }; } }