Boost logo

Boost :

From: Jason Stewart (jstewart_at_[hidden])
Date: 2005-09-22 08:40:31

> > By the way, that might work well for smart
> > pointers; why don't shared_ptr and friends use this idiom?
>Maybe because it allows more than a literal zero?

I personally like the guard/dismiss names, they are reminiscent of
commands you would give a real guard.

However, maybe using the shared_ptr semantics would work. I.e. if you
can create a guard that is "uninitialized" and then reset it later to
an active guard.

         scope_guard g;

         if (some condition)
                 g = scope_guard(my_undo_function);
                 // do something here

         if (some other condition)
                 // we changed our mind, dismiss it.
                 g = scope_guard;

                 // or ...
                 // g.dismiss();
                 // g.reset(); // like shared_ptr

It seems to me that is as easy to read as having an explicit "guard"
or "activate" command is. I confess though that I didn't follow the
early discussion closely so I apologize is this has been discussed already.

Jason Stewart

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