#include <iostream>
using namespace std;
template<int N>
struct Member
{
Member(int some_arg)
{
std::cout << "Default constructor of Meber " << N << std::endl;
}
};
class A
{
Member<1> m1;
Member<2> m2;
enum TrackerType { NONE, ONE, TWO };
public:
A(TrackerType tracker = NONE)
try // A constructor try block.
: m1((tracker = ONE, 1)) // Can throw std::exception
, m2((tracker = TWO, 1)) // Can throw std::exception
{
//TODO:
}
catch (std::exception const & e)
{
if (tracker == ONE) {
std::cout << "m1 threw: " << e.what() << std::endl;
}
else if (tracker == TWO) {
std::cout << "m2 threw: " << e.what() << std::endl;
}
throw;
}
};
int main() {
A obj;
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKICAgIHRlbXBsYXRlPGludCBOPgogICAgc3RydWN0IE1lbWJlcgogICAgewogICAgCU1lbWJlcihpbnQgc29tZV9hcmcpIAogICAgCXsKICAgIAkJc3RkOjpjb3V0IDw8ICJEZWZhdWx0IGNvbnN0cnVjdG9yIG9mIE1lYmVyICIgPDwgTiA8PCBzdGQ6OmVuZGw7CiAgICAJfQogICAgfTsKICAgIAogICAgY2xhc3MgQSAKICAgIHsKICAgIAlNZW1iZXI8MT4gbTE7CiAgICAJTWVtYmVyPDI+IG0yOwogICAgICAgZW51bSBUcmFja2VyVHlwZSB7IE5PTkUsIE9ORSwgVFdPIH07CiAgICBwdWJsaWM6CiAgICAgICBBKFRyYWNrZXJUeXBlIHRyYWNrZXIgPSBOT05FKQogICAgICAgdHJ5ICAgIC8vIEEgY29uc3RydWN0b3IgdHJ5IGJsb2NrLgogICAgICAgICA6IG0xKCh0cmFja2VyID0gT05FLCAxKSkgLy8gQ2FuIHRocm93IHN0ZDo6ZXhjZXB0aW9uCiAgICAgICAgICwgbTIoKHRyYWNrZXIgPSBUV08sIDEpKSAvLyBDYW4gdGhyb3cgc3RkOjpleGNlcHRpb24KICAgICAgICAgewogICAgCQkgLy9UT0RPOgogICAgICAgICB9CiAgICAgICBjYXRjaCAoc3RkOjpleGNlcHRpb24gY29uc3QgJiBlKQogICAgICAgICB7CiAgICAgICAgICAgIGlmICh0cmFja2VyID09IE9ORSkgewogICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIm0xIHRocmV3OiAiIDw8IGUud2hhdCgpIDw8IHN0ZDo6ZW5kbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmICh0cmFja2VyID09IFRXTykgewogICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIm0yIHRocmV3OiAiIDw8IGUud2hhdCgpIDw8IHN0ZDo6ZW5kbDsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aHJvdzsKICAgICAgICAgfQogICAgfTsKICAgIAppbnQgbWFpbigpIHsKCUEgb2JqOwoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJcmV0dXJuIDA7Cn0=