I can't find any good documentation about boost::mpl::find_if. The syntax is different to that of std::find_if and std::find_if cannot be applied to lists of boost::shared_ptr's. So I created my own find_if by modifying the std one.:
<code> #include <iostream> #include <list> #include <boost/shared_ptr.hpp> namespace my { template <class InputIterator, class Predicate> InputIterator find_if (InputIterator first, InputIterator last, Predicate pred) { while (first != last && !pred(first->get())) ++first; return first; } }; class A { int x; public: A(int x) : x(x) {} bool operator() (const A* a) { return a->x == x; } }; void fill(std::list<boost::shared_ptr<A> >& Alist, int n) { for(int i=0; i<n; i++) Alist.push_back(boost::shared_ptr<A>(new A(i))); } bool find(const std::list<boost::shared_ptr<A> >& Alist, int v) { return my::find_if(Alist.begin(), Alist.end(), A(v)) != Alist.end(); } int main() { std::list<boost::shared_ptr<A> > As; fill(As, 10); if(find(As, 5)) std::cout << "5 found.\n"; else std::cout << "5 not found.\n"; if(find(As, 15)) std::cout << "15 found.\n"; else std::cout << "15 not found.\n"; } </code> That works fine, but I don't know whether that is o.k. to do so. Or is there a better way? Markus _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost