From: Peter Dimov [mailto:pdimov@mmltd.net] [snip] (An example of a convincing case: "In my project I have encountered the following situation:
and I believe that scoped_ptr 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