$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Andrey Semashev (andysem_at_[hidden])
Date: 2005-09-23 12:38:58
> 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.
Since in current implementation scope_guard is a typedefed reference the
example above will not work. Besides, I don't really like the idea to create
the whole object just to change the status. In addition, the code
readability suffers.