// fo/memfun1a.cpp class Person { private: std::string name; public: ... void print () const { std::cout << name << std::endl; } void printWithPrefix (std::string prefix) const { std::cout << prefix << name << std::endl; } }; void foo (const std::vector& coll) { using std::for_each; using std::bind2nd; using std::mem_fun_ref; // Вызов функции print() для каждого элемента вектора for_each (coll.begin(), coll.end(), mem_fun_ref(&Person::print)); // Вызов функции printWithPrefix() для каждого элемента // - строка "person: " передается при вызове for_each (coll.begin(), coll.end(), bind2nd(mem_fun_ref(&Person::printWithPrefix), "person: ")); } int main() { std::vector coll(5); foo(coll); std::vector coll2; coll2.push_back(new Person); ptrfoo(coll2); }