- in most cases, do not throw in the destructor. let the destroctor finishes its job.
- have a nice default constructor; if something is wrong, the object is not even constructed. you don't have to worry about the object state. it's not even exists yet, and all internal stuff are clean out by destructor(s).
: v_(new T), // default allocation
vused_(0) // nothing used yet