#include #include namespace clanguml { namespace t20009 { template struct A { void a(T arg) { } }; template struct B { void b(T arg) { a->a(arg); } std::unique_ptr> a; }; using BFloatPtr = std::shared_ptr>; void tmain() { std::shared_ptr> bstring; auto bint = std::make_unique>(); BFloatPtr bfloat; bstring->b("b"); bint.get()->b(42); bfloat->b(1.0); } } }