#include <typeinfo>
#include <iostream>
template<typename T = void>
class D
{
public:
static void f()
{
std::cout << typeid(D).name() << "\n";
std::cout << typeid(D<T>).name() << "\n";
std::cout << typeid(D<>).name() << "\n";
std::cout << "\n";
}
};
int main() {
D<int>::f();
D<double>::f();
return 0;
}
I2luY2x1ZGUgPHR5cGVpbmZvPgojaW5jbHVkZSA8aW9zdHJlYW0+Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZD4KY2xhc3MgRAp7CnB1YmxpYzoKICAgIHN0YXRpYyB2b2lkIGYoKQogICAgewogICAgCXN0ZDo6Y291dCA8PCB0eXBlaWQoRCkubmFtZSgpIDw8ICJcbiI7CiAgICAJc3RkOjpjb3V0IDw8IHR5cGVpZChEPFQ+KS5uYW1lKCkgPDwgIlxuIjsKICAgIAlzdGQ6OmNvdXQgPDwgdHlwZWlkKEQ8PikubmFtZSgpIDw8ICJcbiI7CiAgICAJc3RkOjpjb3V0IDw8ICJcbiI7CiAgICB9Cn07CgppbnQgbWFpbigpIHsKCUQ8aW50Pjo6ZigpOwoJRDxkb3VibGU+OjpmKCk7CglyZXR1cm4gMDsKfQ==