boostスレに書くべきかも知れないけど、ラムダ式でキャプチャされたthisは
ptr_vectorの場合ポインタではなく参照だと知らなかった

class Animal {
public:
virtual void cry() const = 0;
virtual ~Animal() {}
};
class Dog : public Animal {
void cry() const {
std::cout << "bark" << std::endl;
}
};
class Cat : public Animal {
void cry() const {
std::cout << "mew" << std::endl;
}
};
int main()
{
boost::ptr_vector<Animal> pa;

pa.push_back(new Dog);
pa.push_back(new Cat);

std::for_each(std::begin(pa), std::end(pa), [=](Animal& ra) { ra.cry(); });
}