Hi,

I've recently been making more use of boost::bind, and I coded the following, which I thought would work:

class A {
    public:
    void reset () {}
};
typedef std::map<int, boost::shared_ptr<A> > map_type;
map_type m;
std::for_each (m.begin(), m.end(),
    boost::bind(&A::reset,
    boost::bind(&map_type::value_
type::second, _1)));

but fails to compile. Next I tried this:

std::for_each (m.begin(), m.end(),
    boost::bind(&A::reset,
    boost::bind(&boost::shared_ptr<A>::get,
    boost::bind(&map_type::value_type::second, _1))));

Which works and is fine (I guess).  I just wonder why the first syntax is not supported? boost::shared_ptr is supposed to behave like a pointer (and here it seems that it does not).

--
Kevin