#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;
}