c++汎用アルゴリズム-for_each



#include<iostream>
#include<vector>
#include<boost/assign.hpp>
using namespace std;
using namespace boost::assign;

class B{
public:
    virtual void f(){cout<<"B::f()"<<endl;}
};

class D:public B{
public:
    void f(){cout<<"D::f()"<<endl;}
};

template<typename T>
void fun(T* t)
{
    t->f();
}

int main()
{
    vector<B*> v;
    B* b = new B;
    D* d = new D;
    push_back(v)(b)(d);//boost::assign
    for_each(v.begin(),v.end(),mem_fun( &B::f ));
    for_each(v.begin(),v.end(),fun<B>);
}


B::f()
D::f()
B::f()
D::f()