From: Peter Dimov (pdimov_at_[hidden])
Date: 2002-02-04 06:27:03
From: "beatlebum1967" <beatlebum1967_at_[hidden]>
> int val=1;
> std::for_each(testVec.begin(), testVec.end(),
> I can get the above snippet to compile when the container holds
> regular pointers e.g.
> std::vector<CSwarmDownloadManagerFileFragmentInfo*> testVec;
> However, I am using boost::shared_ptr. According to the docs at
> boost.org, the boost replacement for mem_fun, mem_fn will work with
> shared_ptr's, but I cannot get it to work in either VC++6 or the new,
> supposedly more standard compliant VC++7.
> Here's my vector definition:
> std::vector<boost::shared_ptr<CSwarmDownloadManagerFileFragmentInfo> >
> I would appreciate help.
You need to use boost::bind. Replace the bind2nd() expression with:
boost::bind(&CSwarmDownloadManagerFileFragmentInfo::Test, _1, val)
mem_fn works with shared_ptr's, but bind2nd doesn't know this. ;-)
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk