This example is a classic use case for smart pointers. Batnot completely constructed, so the destructor will not be called, but the destructor for m_member_strand all other fully constructed elements will be. If you don’t need an ugly block, for example try { foo(); } catch (...) { delete m_member_str; }, you will need to enjoy RAII.
std::auto_ptr boost::scoped_ptr ++ 03 ++ 11. .