Boost logo

Boost :

From: Howard Hinnant (howard.hinnant_at_[hidden])
Date: 2006-12-01 19:33:35


On Dec 1, 2006, at 5:00 PM, Sohail Somani wrote:

> Most C libraries have make_X/free_X pairs. So a typical C call could
> look like:
>
> ...
> struct T * c = make_T(args);
> do_stuff_with_a_T(c);
> free_T(c);
> ...
>
> Which I would like to replace with:
>
> ...
> typedef some_ptr<T,Deleter<free_T> > T_ptr;
> T_ptr c(make_T(args));
> do_stuff_with_a_T(c.get());
> ...

Does this work for you?

     typedef unique_ptr<T, void (*)(void*)> T_ptr;
     int args;
     T_ptr c(make_T(args), std::free); // assumes make_T uses
std::malloc
     do_stuff_with_a_T(c.get());

http://home.twcny.rr.com/hinnant/cpp_extensions/unique_ptr_03.html

-Howard


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk