Boost logo

Boost Users :

From: bjorn.karlsson_at_[hidden]
Date: 2003-02-14 07:37:33


> From: Peter Dimov [mailto:pdimov_at_[hidden]]
[snip]
> (An example of a convincing case: "In my project I have
> encountered the
> following situation: <description with real(istic sounding)
> identifiers> and
> I believe that scoped_ptr<X, D> would be a perfect fit." Some
> non-examples:
> "Someone might find it useful." "Wouldn't it be cool if...")

In my project I have encountered the following situation: A lot of the code
needs to handle (no pun intended) resources that are represented by
indiscriminate types, such as void* or long. Different resources (and
different functions for allocation/deallocation) use this handle type, so
specialization is not an option. It's possible to use shared_ptr to handle
lifetime management of the resource:

  HANDLE hPrinter=0;
  OpenPrinter(_T("Some printer"),&hPrinter,0);
  if (boost::shared_ptr<void> p(hPrinter,&ClosePrinter)) {

  }

While this works, it doesn't convey the intent of the code (nor preserve
it): the resource should typically not be shared, only scoped, and I believe
that scoped_ptr<X,D> would be a perfect fit.

There are other tools in Boost (outside too, of course) for solving this
type of problem, but I think it would be more than cool for scoped_ptr to
have this feature; I'd definitely use it in real code.

Bjorn Karlsson


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net