#include <iostream>
#include <memory>
template <typename T>
class A
{
T a;
T b;
public:
A(T a, T b): a(a), b(b) {}
void show() {
std::cout << a << b << std::endl;
}
};
class B
{
std::shared_ptr<A<int>> ptr = nullptr;
void foo()
{
ptr = std::make_shared<A<int>>(1, 2);
}
public:
void bar()
{
foo();
ptr->show();
}
};
int main()
{
B b;
b.bar();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmNsYXNzIEEKewogICAgVCBhOwogICAgVCBiOwpwdWJsaWM6CiAgICBBKFQgYSwgVCBiKTogYShhKSwgYihiKSB7fQogICAgdm9pZCBzaG93KCkgewogICAgICAgIHN0ZDo6Y291dCA8PCBhIDw8IGIgPDwgc3RkOjplbmRsOwogICAgfQp9OwoKY2xhc3MgQgp7CiAgICBzdGQ6OnNoYXJlZF9wdHI8QTxpbnQ+PiBwdHIgPSBudWxscHRyOwoKICAgIHZvaWQgZm9vKCkKICAgIHsKICAgICAgICBwdHIgPSBzdGQ6Om1ha2Vfc2hhcmVkPEE8aW50Pj4oMSwgMik7CiAgICB9CgpwdWJsaWM6CiAgICB2b2lkIGJhcigpCiAgICB7CiAgICAJZm9vKCk7CiAgICAgICAgcHRyLT5zaG93KCk7CiAgICB9Cgp9OwoKaW50IG1haW4oKQp7CiAgICBCIGI7CiAgICBiLmJhcigpOwogICByZXR1cm4gMDsKfQo=