#include <iostream>
#include <vector>
#include <typeinfo>
#include <memory>

using namespace std;

class Tour
{
public:
	Tour() {}

	virtual void Display() const { cout << "NOT guided tour." << endl; }
};

class GuidedTour : public Tour
{
public:
	GuidedTour() : Tour() {}

	void Display() const { cout << "Guided tour." << endl; }
};

int main()
{
	std::vector<std::unique_ptr<Tour>> list;

	list.emplace_back(new Tour);
	list.emplace_back(new GuidedTour);
	list.emplace_back(new Tour);
	list.emplace_back(new GuidedTour);
	list.emplace_back(new Tour);

	for ( auto& t : list )
	{
		if ( typeid(*t) == typeid(GuidedTour) )
			cout << "TypeId : GuidedTour" << endl;
		else
			cout << "TypeId : Not GuidedTour" << endl;

		t->Display();
	}
}