#include <iostream>
#include <vector>
struct Poop
{
~Poop(){
printf("~Poop()\n");
}
};
int main()
{
std::vector< std::vector<Poop> > vec(1);
printf("Adding...\n");
// Add three elements; will call Poop's destructor three times
vec[0].push_back(Poop());
vec[0].push_back(Poop());
vec[0].push_back(Poop());
printf("\nRemoving...\n");
// Will call each element in vec[0]'s destructor
// So ~Poop() three times
vec.pop_back();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKc3RydWN0IFBvb3AKewogICAgflBvb3AoKXsKICAgICAgICBwcmludGYoIn5Qb29wKClcbiIpOwogICAgfQp9OwoKaW50IG1haW4oKQp7CiAgICBzdGQ6OnZlY3Rvcjwgc3RkOjp2ZWN0b3I8UG9vcD4gPiB2ZWMoMSk7CgogICAgcHJpbnRmKCJBZGRpbmcuLi5cbiIpOwoKICAgIC8vIEFkZCB0aHJlZSBlbGVtZW50czsgd2lsbCBjYWxsIFBvb3AncyBkZXN0cnVjdG9yIHRocmVlIHRpbWVzCiAgICB2ZWNbMF0ucHVzaF9iYWNrKFBvb3AoKSk7CiAgICB2ZWNbMF0ucHVzaF9iYWNrKFBvb3AoKSk7CiAgICB2ZWNbMF0ucHVzaF9iYWNrKFBvb3AoKSk7CgogICAgcHJpbnRmKCJcblJlbW92aW5nLi4uXG4iKTsKCiAgICAvLyBXaWxsIGNhbGwgZWFjaCBlbGVtZW50IGluIHZlY1swXSdzIGRlc3RydWN0b3IKICAgIC8vIFNvIH5Qb29wKCkgdGhyZWUgdGltZXMKICAgIHZlYy5wb3BfYmFjaygpOwoKICAgIHJldHVybiAwOwp9