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()