void somefoo(A &a, list<b *> &bb)
{
// a.foo(*It)
for_each(bb.begin(), bb.end(), bind1st(mem_fun(&A::foo),&a));
// It->foo(&a);
for_each(bb.begin(), bb.end(), bind2nd(mem_fun(&B::foo), &a));
}
{
// a.foo(*It)
for_each(bb.begin(), bb.end(), bind1st(mem_fun(&A::foo),&a));
// It->foo(&a);
for_each(bb.begin(), bb.end(), bind2nd(mem_fun(&B::foo), &a));
}