#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;
}