- #include <string> 
- #include <stdexcept> 
- #include <iostream> 
- using namespace std; 
-   
- class throwsecond 
- { 
-     static int count; 
- public: 
-     throwsecond(const string &) 
-     { 
-         if (count ++) 
-         { 
-             count = 0; 
-             throw runtime_error("Kaboom!"); 
-         } 
-         cout << "Constructed\n"; 
-     } 
-     ~throwsecond() 
-     { 
-         cout << "Destructed\n"; 
-     } 
- }; 
-   
- int throwsecond::count = 0; 
-   
- class bad_example 
- { 
-     throwsecond * a; 
-     throwsecond * b; 
- public: 
-     bad_example(): a(nullptr), b(nullptr) 
-     { 
-     } 
-     bad_example (const string& a, 
-                  const string& b) 
-     { 
-         this->a = new throwsecond(a); 
-         this->b = new throwsecond(b); 
-     } 
-     ~bad_example() 
-     { 
-         delete a; 
-         delete b; 
-     } 
- }; 
-   
- class good_example 
- { 
-     throwsecond * a; 
-     throwsecond * b; 
- public: 
-     good_example(): a(nullptr), b(nullptr) 
-     { 
-     } 
-     good_example (const string& a, 
-                   const string& b) : good_example{} 
-     { 
-         this->a = new throwsecond(a); 
-         this->b = new throwsecond(b); 
-     } 
-     ~good_example() 
-     { 
-         delete a; 
-         delete b; 
-     } 
- }; 
-   
- int main() 
- { 
-     cout << "Bad example\n"; 
-     try 
-     { 
-         bad_example("", ""); 
-     } 
-     catch (...) 
-     { 
-         cout << "Caught exception\n"; 
-     } 
-     cout << "Good example\n"; 
-     try 
-     { 
-         good_example("", ""); 
-     } 
-     catch (...) 
-     { 
-         cout << "Caught exception\n"; 
-     } 
- } 
-   
				I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgdGhyb3dzZWNvbmQKewogICAgc3RhdGljIGludCBjb3VudDsKcHVibGljOgogICAgdGhyb3dzZWNvbmQoY29uc3Qgc3RyaW5nICYpCiAgICB7CiAgICAgICAgaWYgKGNvdW50ICsrKQogICAgICAgIHsKICAgICAgICAgICAgY291bnQgPSAwOwogICAgICAgICAgICB0aHJvdyBydW50aW1lX2Vycm9yKCJLYWJvb20hIik7CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgIkNvbnN0cnVjdGVkXG4iOwogICAgfQogICAgfnRocm93c2Vjb25kKCkKICAgIHsKICAgICAgICBjb3V0IDw8ICJEZXN0cnVjdGVkXG4iOwogICAgfQp9OwoKaW50IHRocm93c2Vjb25kOjpjb3VudCA9IDA7CgpjbGFzcyBiYWRfZXhhbXBsZQp7CiAgICB0aHJvd3NlY29uZCAqIGE7CiAgICB0aHJvd3NlY29uZCAqIGI7CnB1YmxpYzoKICAgIGJhZF9leGFtcGxlKCk6IGEobnVsbHB0ciksIGIobnVsbHB0cikKICAgIHsKICAgIH0KICAgIGJhZF9leGFtcGxlIChjb25zdCBzdHJpbmcmIGEsCiAgICAgICAgICAgICAgICAgY29uc3Qgc3RyaW5nJiBiKQogICAgewogICAgICAgIHRoaXMtPmEgPSBuZXcgdGhyb3dzZWNvbmQoYSk7CiAgICAgICAgdGhpcy0+YiA9IG5ldyB0aHJvd3NlY29uZChiKTsKICAgIH0KICAgIH5iYWRfZXhhbXBsZSgpCiAgICB7CiAgICAgICAgZGVsZXRlIGE7CiAgICAgICAgZGVsZXRlIGI7CiAgICB9Cn07CgpjbGFzcyBnb29kX2V4YW1wbGUKewogICAgdGhyb3dzZWNvbmQgKiBhOwogICAgdGhyb3dzZWNvbmQgKiBiOwpwdWJsaWM6CiAgICBnb29kX2V4YW1wbGUoKTogYShudWxscHRyKSwgYihudWxscHRyKQogICAgewogICAgfQogICAgZ29vZF9leGFtcGxlIChjb25zdCBzdHJpbmcmIGEsCiAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cmluZyYgYikgOiBnb29kX2V4YW1wbGV7fQogICAgewogICAgICAgIHRoaXMtPmEgPSBuZXcgdGhyb3dzZWNvbmQoYSk7CiAgICAgICAgdGhpcy0+YiA9IG5ldyB0aHJvd3NlY29uZChiKTsKICAgIH0KICAgIH5nb29kX2V4YW1wbGUoKQogICAgewogICAgICAgIGRlbGV0ZSBhOwogICAgICAgIGRlbGV0ZSBiOwogICAgfQp9OwoKaW50IG1haW4oKQp7CiAgICBjb3V0IDw8ICJCYWQgZXhhbXBsZVxuIjsKICAgIHRyeQogICAgewogICAgICAgIGJhZF9leGFtcGxlKCIiLCAiIik7CiAgICB9CiAgICBjYXRjaCAoLi4uKQogICAgewogICAgICAgIGNvdXQgPDwgIkNhdWdodCBleGNlcHRpb25cbiI7CiAgICB9CiAgICBjb3V0IDw8ICJHb29kIGV4YW1wbGVcbiI7CiAgICB0cnkKICAgIHsKICAgICAgICBnb29kX2V4YW1wbGUoIiIsICIiKTsKICAgIH0KICAgIGNhdGNoICguLi4pCiAgICB7CiAgICAgICAgY291dCA8PCAiQ2F1Z2h0IGV4Y2VwdGlvblxuIjsKICAgIH0KfQo=