Что-то торможу под конец дня.

Есть такое:
class foo;
typedef boost::shared_ptr<foo> foo_ptr;
class bar;
typedef boost::shared_ptr<bar> bar_ptr;
class bar
{
public:
void f(foo_ptr pfoo);
};
class foo
{
vector<bar_ptr> bars_;
void g()
{
for_each( bars_.begin(), bars_.end(),
bind2nd(
mem_fun<void, bar_ptr, foo_ptr>(&bar::f),
foo_ptr(this)
)
);
}
};
Не компилируется — типы bar_ptr и bar для mem_fun не совпадают.
Пытаюсь сделать
for_each( bars_.begin(), bars_.end(),
bind2nd(
mem_fun<void, bar, foo_ptr>(&bar::f),
foo_ptr(this)
)
);
Тоже не компилируется — теперь не совпадают типы аргументов для bind2nd.
Есть ли какое-то решение, кроме написания своего функтора?
Posted via RSDN NNTP Server 1.7 beta