title: c++ exception safety
body: <p>Exceptional C++ mentions the following code</p>
  
  <pre><code>template &lt;class T&gt; class Stack 
  {
      public:
        Stack();
        ~Stack();
  
        /*...*/
  
      private:
         T*     v_;      // ptr to a memory area big
         size_t vsize_;  //  enough for 'vsize_' T's
         size_t vused_;  // # of T's actually in use
  };
  
  
  
  template&lt;class T&gt; 
  Stack&lt;T&gt;::Stack()
          : v_(new T[10]),  // default allocation
            vsize_(10),
            vused_(0)       // nothing used yet
  { 
  }
  </code></pre>
  
  <p>It says that If one of the T constructors threw, then any T objects that were fully constructed were properly destroyed and, finally, operator delete was automatically called to release the memory. That makes us leakproof.</p>
  
  <p>My understanding was that if a constructor throws an exception, the application should cleanup any allocated resources.  How is the above leakproof?</p>