#include <iostream>
#include <typeinfo>
#include <map>
struct A {
A( ) {
std:: cout << "A was created" << std:: endl ;
}
A( A && ) {
std:: cout << "A's move constructor was called" << std:: endl ;
}
A( A const & ) {
std:: cout << "A's copy constructor was called" << std:: endl ;
}
~A( ) {
std:: cout << "A was destroyed" << std:: endl ;
}
} ;
int main( ) {
std:: map < int , A> theMap { { 1 , A( ) } , { 2 , A( ) } } ;
std:: cout << "Starting for loop now" << std:: endl ;
for ( auto const & pair : theMap) {
std:: cout << "performed an iteration" << std:: endl ;
}
std:: cout << "for loop finished" << std:: endl ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZWluZm8+CiNpbmNsdWRlIDxtYXA+CgpzdHJ1Y3QgQSB7CiAgICBBKCkgewogICAgICAgIHN0ZDo6Y291dCA8PCAiQSB3YXMgY3JlYXRlZCIgPDwgc3RkOjplbmRsOwogICAgfQoKICAgIEEoQSAmJikgewogICAgICAgIHN0ZDo6Y291dCA8PCAiQSdzIG1vdmUgY29uc3RydWN0b3Igd2FzIGNhbGxlZCIgPDwgc3RkOjplbmRsOwogICAgfQoKICAgIEEoQSBjb25zdCAmKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJBJ3MgY29weSBjb25zdHJ1Y3RvciB3YXMgY2FsbGVkIiA8PCBzdGQ6OmVuZGw7CiAgICB9CgogICAgfkEoKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJBIHdhcyBkZXN0cm95ZWQiIDw8IHN0ZDo6ZW5kbDsKICAgIH0KfTsKCmludCBtYWluKCkgewogICAgc3RkOjptYXA8aW50LCBBPiB0aGVNYXAge3sxLCBBKCl9LCB7MiwgQSgpfX07CgogICAgc3RkOjpjb3V0IDw8ICJTdGFydGluZyBmb3IgbG9vcCBub3ciIDw8IHN0ZDo6ZW5kbDsKCiAgICBmb3IgKGF1dG8gY29uc3QgJiBwYWlyIDogdGhlTWFwKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJwZXJmb3JtZWQgYW4gaXRlcmF0aW9uIiA8PCBzdGQ6OmVuZGw7CiAgICB9CgogICAgc3RkOjpjb3V0IDw8ICJmb3IgbG9vcCBmaW5pc2hlZCIgPDwgc3RkOjplbmRsOwp9