I think it is better to pass the value as const reference to Save instead copying it.

On 9/13/07, David Klein <dave_chp@gmx.de > wrote:
Hughes, James wrote:
> I have a question for boost:binders out there... In the following
> scenario..(pseudocode)
>
> Class Fred
> {
>  typedef std::map<wstring, shared_ptr<SomeType> > MyMap;
>
>  MyMap Bert;
>
>  Save(MyMap::iterator pos)
>  {
>     ...
>  }
>
>  SaveAll()
>  {
>     for_each(Bert.begin(), Bert.end(), bind(&Fred::Save, this, _1);
>  }
>
> };
>
>
> The code wants to save all the data in the map. The bind, I was hoping,
> would simply call Save for all items in the map, passing in the iterator
> as the parameter, but I get a template compile fault on the bind. I've
> tried all sorts of combinations, checked boost docs, read the chapter in
> Beyond the C++ standard library, Googled etc, but just cannot figure out
> what I need to do here.
>
> Any help gratefully received.
>
> James
>
Hi James,

Class Fred
{
...

void                                   // void was missing
Save(MyMap::value_type pos)            // changed iterator to value_type
{
    ...
}

void                                   // void was missing
SaveAll()
{
    for_each(Bert.begin(), Bert.end(), bind(&Fred::Save, this, _1);
}

};

--
HTH,
dave

_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users