1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
#include <iostream>

class X {
   private:
      const char* name;
   public:
      X(const char* name) : name(name) {
	 std::cout << "X \"" << name << "\" constructed" << std::endl;
      }
      ~X() {
	 std::cout << "X \"" << name << "\" destructed" << std::endl;
      }
};

void foo(int selector) {
   if (selector) {
      static X x1 = "x1 within foo";
   }
   static X x2 = "x2 within foo";
}

int main() {
   std::cout << "main starts" << std::endl;
   int selector;
   if (std::cin >> selector) {
      foo(selector); foo(1);
   }
   std::cout << "main ends" << std::endl;
}