|
Boost Users : |
From: Peter Dimov (pdimov_at_[hidden])
Date: 2002-09-12 13:27:18
From: "Mark Snelling" <mark_at_[hidden]>
[...]
>
> std::list<Object*> mylist;
>
> I can call the for_each algorithm on this list using my function above:
>
> std::for_each(mylist.begin(), mylist.end(), &deleter);
>
> and it will delete all of the objects pointed to in the list.
> Is it possible to convert deleter into a templated function:
>
> template<class T> void deleter(T* t)
> {
> delete t;
> }
>
> and pass that into the for_each algorithm?
Yes. You can use
std::for_each(mylist.begin(), mylist.end(), &deleter<Object>);
If this doesn't work, try
#include <boost/checked_delete.hpp>
std::for_each(mylist.begin(), mylist.end(),
boost::checked_deleter<Object>());
An alternative is to convert mylist to
std::list< boost::shared_ptr<Object > mylist;
and let it worry about the lifetime of the objects.
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