#include <iostream>
#include <typeinfo>

using namespace std;

class TLine{};
class TCircle{};

class TPrimitive
{
public:
	TPrimitive(){}
	explicit TPrimitive(const TPrimitive&){}
	template<class T>
	explicit TPrimitive(const T&){}
};

int main() {
	TPrimitive a((TLine())), b((TCircle()));
	cout<<typeid(a).name()<<endl;
	cout<<typeid(b).name()<<endl;
	return 0;
}