Boost logo

Boost Users :

From: Hughes, James (jhughes_at_[hidden])
Date: 2007-06-11 07:15:20


 

> -----Original Message-----
> From: boost-users-bounces_at_[hidden]
> [mailto:boost-users-bounces_at_[hidden]] On Behalf Of
> Hughes, James
> Sent: 11 June 2007 12:04
> To: boost-users_at_[hidden]
> Subject: [Boost-users] [bind] Help with functional
> composition ofshared_ptr::use_count in std::map
>
> Hello all,
>
> I'm trying to use bind to help with removeif in a
> std::map<string, shared_ptr<something> >. I want to remove
> items where the shared_ptr use_count is 1.
>
> map<string, shared_ptr<data> > Fred;
>
> RemoveIf(Fred.begin(),
> Fred.end(),
> boost::bind(std::equal_to<long>(),
> 1,
> boost::bind(&map<string, shared_ptr<data>
> >::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<string, shared_ptr<data>
>::value_type::second::unique, _1)
        )

Still get same compile fault however.

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.


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