$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Daniel Wallin (dalwan01_at_[hidden])
Date: 2003-09-24 15:28:25
At 22:02 2003-09-24, Dumbnose wrote:
>I hadn't set out to do this.  I couldn't find the download for the code from
>the original article.  So, I was just sitting at a coffe shop to reimplement
>it as described in the article.  I got sick of cutting and pasting and
>decided to do this instead.  I only tried it with Visual C++ 7.1 so far.
>Once I get a few minutes, I will check it with Comeau and GCC (I've been at
>work for two days straight, so I'm a little slap happy right now).  I am
>attaching my implementation as well as the basic tests I created for it.
This is a very inefficient implementation. There is really no point in using
a boost::function<> when the class can just as well be a template.
FWIW, here's the scopeguard implementation that I use:
   namespace detail
   {
      class guard_base
      {
      public:
         guard_base()
            : m_dismissed(false)
         {}
         void dismiss() const
         { m_dismissed = true; }
      protected:
         mutable bool m_dismissed;
      };
      template<class T>
      class guard_impl : public guard_base
      {
      public:
         explicit guard_impl(const T& x)
            : m_action(x)
         {}
         ~guard_impl()
         {
            if (!m_dismissed)
               m_action();
         }
      private:
         T m_action;
      };
   }
   template<class T>
   detail::guard_impl<T> make_guard(T x)
   {
      return detail::guard_impl<T>(x);
   }
   typedef const detail::guard_base& scope_guard;
>John
>
>
>----- Original Message -----
>From: "David Abrahams" <dave_at_[hidden]>
>Newsgroups: gmane.comp.lib.boost.devel
>Sent: Wednesday, September 24, 2003 8:17 AM
>Subject: Re: ScopeGuard
>
>
> > "John Sheehan" <dumbnose_at_[hidden]> writes:
> >
> > > I took the ScopeGuard implementation by Andrei Alexandrescu and
> > > reimplemented it using Boost.Function and Boost.Bind.  I was able to
> > > implement it with a single class and one helper function per supported
> > > signature.  It is really useful.  If anyone is interested, I can send
> > > it to them or post it to the list.
> >
> > Please post it!  Would you like to submit it for review?
> >
> > --
> > Dave Abrahams
> > Boost Consulting
> > www.boost-consulting.com
> >
> > _______________________________________________
> > Unsubscribe & other changes:
>http://listarchives.boost.org/mailman/listinfo.cgi/boost
> >
>
>
>_______________________________________________
>Unsubscribe & other changes: http://listarchives.boost.org/mailman/listinfo.cgi/boost
--- Daniel Wallin