Hello all,
I'm trying to use bind to help with removeif in a std::map
. I want to remove items where the shared_ptr use_count is 1. map
Fred; RemoveIf(Fred.begin(), Fred.end(), boost::bind(std::equal_to<long>(), 1, boost::bind(&map
::value_type::second::use_count, _1) )
However, I get a compile error on ::second not being a class or namespace.
Anyone know how I should do this? I'm a beginner at boost::bind, so be gentle....
James
Sorry, that should read remove_if, and in fact the purpose is better served using shared_ptr<>::unique, which should mean I can get rid of the std:equal_to stuff
RemoveIf(Fred.begin(), Fred.end(), boost::bind(&map
::value_type::second::unique, _1) )
Still get same compile fault however.
James
Have now replaced second in above with second_type
Remove_if(Fred.begin(),
Fred.end(),
boost::bind(&map ::value_type::second_type::unique, _1)
) And am not getting a completely differnet error - bind seems to be doing
a load of work, but eventually I get an
mem_fn_template.hpp:90: error : No matching function for call to
'get_pointer(const std::pair &)' I'm running out of ideas here so all welcome..
James
This message (including any attachments) contains confidential
and/or proprietary information intended only for the addressee.
Any unauthorized disclosure, copying, distribution or reliance on
the contents of this information is strictly prohibited and may
constitute a violation of law. If you are not the intended
recipient, please notify the sender immediately by responding to
this e-mail, and delete the message from your system. If you
have any questions about this e-mail please notify the sender
immediately.