#include <iostream>
struct loud
{
static int id;
int mid = ++ id;
loud( ) { std:: cout << "default ctor of " << mid << "\n " ; }
loud( loud const & ) { std:: cout << "copy ctor of " << mid << "\n " ; }
loud( loud&& ) noexcept { std:: cout << "move ctor of " << mid << "\n " ; }
~loud( ) { std:: cout << "dtor of " << mid << "\n " ; }
loud& operator = ( loud const & ) { std:: cout << "copy assignment-op of " << mid << "\n " ; }
loud& operator = ( loud&& ) noexcept { std:: cout << "move assignment-op of " << mid << "\n " ; }
} ;
int loud:: id = 0 ;
#include <vector>
int main( )
{
std:: vector < loud> v( 5 ) ;
v.erase ( v.begin ( ) ) ;
std:: cout << "end of program\n " ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgpzdHJ1Y3QgbG91ZAp7CiAgICBzdGF0aWMgaW50IGlkOwogICAgaW50IG1pZCA9ICsraWQ7CiAgICBsb3VkKCkgeyBzdGQ6OmNvdXQgPDwgImRlZmF1bHQgY3RvciBvZiAiIDw8IG1pZCA8PCAiXG4iOyB9CiAgICBsb3VkKGxvdWQgY29uc3QmKSB7IHN0ZDo6Y291dCA8PCAiY29weSBjdG9yIG9mICIgPDwgbWlkIDw8ICJcbiI7IH0KICAgIGxvdWQobG91ZCYmKSBub2V4Y2VwdCB7IHN0ZDo6Y291dCA8PCAibW92ZSBjdG9yIG9mICIgPDwgbWlkIDw8ICJcbiI7IH0KICAgIH5sb3VkKCkgeyBzdGQ6OmNvdXQgPDwgImR0b3Igb2YgIiA8PCBtaWQgPDwgIlxuIjsgfQogICAgbG91ZCYgb3BlcmF0b3IgPShsb3VkIGNvbnN0JikgeyBzdGQ6OmNvdXQgPDwgImNvcHkgYXNzaWdubWVudC1vcCBvZiAiIDw8IG1pZCA8PCAiXG4iOyB9CiAgICBsb3VkJiBvcGVyYXRvciA9KGxvdWQmJikgbm9leGNlcHQgeyBzdGQ6OmNvdXQgPDwgIm1vdmUgYXNzaWdubWVudC1vcCBvZiAiIDw8IG1pZCA8PCAiXG4iOyB9Cn07CmludCBsb3VkOjppZCA9IDA7CiAKI2luY2x1ZGUgPHZlY3Rvcj4KaW50IG1haW4oKQp7CglzdGQ6OnZlY3Rvcjxsb3VkPiB2KDUpOwoJdi5lcmFzZSh2LmJlZ2luKCkpOwoJc3RkOjpjb3V0IDw8ICJlbmQgb2YgcHJvZ3JhbVxuIjsKfQ==