#include <iostream>
#include <vector>
#include <memory>
#include <string>
using namespace std;
class base
{
int field1;
protected:
base(int _field):
field1(_field){}
public:
virtual string to_string()=0;
};
class subclass : public base
{
int field2;
public:
subclass(int _field1, int _field2):
base(_field1),field2(_field2){}
string to_string()
{
return "I am a subtype!!";
}
};
int main()
{
vector<unique_ptr<base> > x;
unique_ptr<base> item(new subclass(123,456));
x.push_back(std::move(item));
cout << x[0]->to_string() <<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bWVtb3J5PgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgYmFzZQp7CiAgIGludCBmaWVsZDE7CnByb3RlY3RlZDoKICAgYmFzZShpbnQgX2ZpZWxkKTogCiAgIGZpZWxkMShfZmllbGQpe30KcHVibGljOgogIHZpcnR1YWwgc3RyaW5nIHRvX3N0cmluZygpPTA7Cn07CgpjbGFzcyBzdWJjbGFzcyA6IHB1YmxpYyBiYXNlCnsKICAgaW50IGZpZWxkMjsKCiAgIHB1YmxpYzoKICAgc3ViY2xhc3MoaW50IF9maWVsZDEsIGludCBfZmllbGQyKToKICAgICAgYmFzZShfZmllbGQxKSxmaWVsZDIoX2ZpZWxkMil7fQoKCiAgIHN0cmluZyB0b19zdHJpbmcoKQogICB7CiAgICAgICByZXR1cm4gIkkgYW0gYSBzdWJ0eXBlISEiOwogICB9Cn07CgppbnQgbWFpbigpCnsKICAgIHZlY3Rvcjx1bmlxdWVfcHRyPGJhc2U+ID4geDsKICAgIHVuaXF1ZV9wdHI8YmFzZT4gaXRlbShuZXcgc3ViY2xhc3MoMTIzLDQ1NikpOwogICAgeC5wdXNoX2JhY2soc3RkOjptb3ZlKGl0ZW0pKTsKICAgIGNvdXQgPDwgeFswXS0+dG9fc3RyaW5nKCkgPDxlbmRsOwogICAgcmV0dXJuIDA7Cn0=