Boost logo

Boost :

From: John Maddock (John_Maddock_at_[hidden])
Date: 2001-06-17 05:28:44

>The deletion of the newly allocated object can be guaranteed easily by
using a variation of the swap-idiom for exception safety:

  template<class T>
  void auto_ptr<T>::reset(T* new_p)
  { // short circuit self-assignment
    if (this_p == new_p)

    // swap (performed here only partially)
    T* old_p = this_p;
    this_p = new_p;

    // perform operations that might throw
    delete old_p;

I don't think that that is any safer than the current version - all you've
done is change the thing that leaks - now if the destructor throws it's
old_ptr that leaks rather then new_ptr, how is this any better? Come to
that what does it mean for a destructor to throw anyway?

- John Maddock

Boost list run by bdawes at, gregod at, cpdaniel at, john at