#include <iostream>
#include <vector>
#include <memory>
struct A
{
virtual ~A() { std::cout << "A::~A()\n"; }
};
struct B : A
{
~B() { std::cout << "B::~B()\n"; }
};
int main()
{
std::vector<std::unique_ptr<A>> v;
v.emplace_back(new B);
v.emplace_back(new B);
v.emplace_back(new B);
v.emplace_back(new B);
v.clear();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bWVtb3J5PgoKc3RydWN0IEEKewoJdmlydHVhbCB+QSgpIHsgc3RkOjpjb3V0IDw8ICJBOjp+QSgpXG4iOyB9Cn07CgpzdHJ1Y3QgQiA6IEEKewoJfkIoKSB7IHN0ZDo6Y291dCA8PCAiQjo6fkIoKVxuIjsgfQp9OwoKaW50IG1haW4oKQp7CglzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QT4+IHY7Cgl2LmVtcGxhY2VfYmFjayhuZXcgQik7Cgl2LmVtcGxhY2VfYmFjayhuZXcgQik7Cgl2LmVtcGxhY2VfYmFjayhuZXcgQik7Cgl2LmVtcGxhY2VfYmFjayhuZXcgQik7CgoJdi5jbGVhcigpOwoKCXJldHVybiAwOwp9Cg==