#include <iostream>
#include <typeinfo>
using namespace std;
template <class T>
class A
{
public:
using type = T;
};
int main(int argc, const char * argv[])
{
A<int> a;
A<double> d;
decltype(a)::type b;
decltype(d)::type c;
cout << typeid(b).name() << endl;
cout << typeid(c).name() << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZWluZm8+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPGNsYXNzIFQ+CmNsYXNzIEEKewpwdWJsaWM6CiAgICB1c2luZyB0eXBlID0gVDsKfTsKCgppbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqIGFyZ3ZbXSkKewogICAgQTxpbnQ+IGE7CiAgICBBPGRvdWJsZT4gZDsKICAgIGRlY2x0eXBlKGEpOjp0eXBlIGI7CiAgICBkZWNsdHlwZShkKTo6dHlwZSBjOwogICAgY291dCA8PCB0eXBlaWQoYikubmFtZSgpIDw8IGVuZGw7CiAgICBjb3V0IDw8IHR5cGVpZChjKS5uYW1lKCkgPDwgZW5kbDsKfQo=