#include <iostream>
class Foo {
const char * m_name;
public :
Foo( const char * name) : m_name( name) { std:: cout << "Foo(" << m_name << ")\n " ; }
~Foo( ) { std:: cout << "~Foo(" << m_name << ");\n " ; }
} ;
Foo g_globalFoo( "global" ) ;
void x( ) {
Foo xFoo( "x" ) ;
std:: cout << "in x\n " ;
}
int main( ) {
Foo mainFoo1( "main1" ) ;
Foo mainFoo2( "main2" ) ;
for ( size_t i = 0 ; i < 3 ; ++ i) {
Foo forFoo( "for" ) ;
std:: cout << "for loop iteration " << i << '\n ' ;
}
{ // inner scope
Foo innerFoo( "inner" ) ;
std:: cout << "leaving inner scope\n " ;
}
std:: cout << "calling x()\n " ;
x( ) ;
std:: cout << "back from x(), ending program\n " ;
return 0 ;
}
ICAgICNpbmNsdWRlIDxpb3N0cmVhbT4KCiAgICBjbGFzcyBGb28gewogICAgICAgIGNvbnN0IGNoYXIqIG1fbmFtZTsKICAgIHB1YmxpYzoKICAgICAgICBGb28oY29uc3QgY2hhciogbmFtZSkgOiBtX25hbWUobmFtZSkgeyBzdGQ6OmNvdXQgPDwgIkZvbygiIDw8IG1fbmFtZSA8PCAiKVxuIjsgfQogICAgICAgIH5Gb28oKSB7IHN0ZDo6Y291dCA8PCAifkZvbygiIDw8IG1fbmFtZSA8PCAiKTtcbiI7IH0KICAgIH07CgogICAgRm9vIGdfZ2xvYmFsRm9vKCJnbG9iYWwiKTsKCiAgICB2b2lkIHgoKSB7CiAgICAgICAgRm9vIHhGb28oIngiKTsKICAgICAgICBzdGQ6OmNvdXQgPDwgImluIHhcbiI7CiAgICB9CgogICAgaW50IG1haW4oKSB7CiAgICAgICAgRm9vIG1haW5Gb28xKCJtYWluMSIpOwogICAgICAgIEZvbyBtYWluRm9vMigibWFpbjIiKTsKCiAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAzOyArK2kpIHsKICAgICAgICAgICAgRm9vIGZvckZvbygiZm9yIik7CiAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiZm9yIGxvb3AgaXRlcmF0aW9uICIgPDwgaSA8PCAnXG4nOwogICAgICAgIH0KCiAgICAgICAgeyAvLyBpbm5lciBzY29wZQogICAgICAgICAgICBGb28gaW5uZXJGb28oImlubmVyIik7CiAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAibGVhdmluZyBpbm5lciBzY29wZVxuIjsKICAgICAgICB9CgogICAgICAgIHN0ZDo6Y291dCA8PCAiY2FsbGluZyB4KClcbiI7CiAgICAgICAgeCgpOwogICAgICAgIHN0ZDo6Y291dCA8PCAiYmFjayBmcm9tIHgoKSwgZW5kaW5nIHByb2dyYW1cbiI7CgogICAgICAgIHJldHVybiAwOwogICAgfQo=