Предположим, что у меня такая иерархия (это просто тестовая программа. Не указывайте ничего, связанное с утечками памяти, деструктор не является виртуальным и т.д.):
class I
{
public:
    virtual void fun(int n, int n1) = 0;
};
class A : public I
{
public:
    void fun(int n, int n1)
    {
        std::cout<<"A::fun():" <<n<<" and n1:" <<n1<<"\n";
    }
};
class B : public I
{
public:
    void fun(int n, int n1)
    {
        std::cout<<"B::fun():" <<n<<" and n1:" <<n1<<"\n";
    }
};
int  main()
{
    std::vector<I*> a;
    a.push_back(new A);
    a.push_back(new B);
    //I want to use std::for_each to call function fun with two arguments.
}
Как мне вызвать метод fun(), который принимает два аргумента, используя std:: for_each? Я думаю, что мне нужно использовать std:: mem_fun, вероятно, с std:: bind2nd, но я не могу понять, как это сделать. Любой ключ, как это сделать? Я не использую boost.
