I think it is better to pass the value as const reference to Save instead copying it.
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