Вместо этого вы можете попробовать boost.lambda:
//using namespace boost::lambda;
for_each(begin, end, stream << _1));
Причина вашей проблемы, скорее всего, такова: как вы можете ожидать, что компилятор / bind будет знать, какой адрес вы берете, если выскажи &operator<<
?(Я получаю другую ошибку, просто говоря, что это не объявлено.)
Если вы действительно хотите сделать это с помощью bind, вам нужно будет указать, какой operator<<
вы хотите использовать,например, предполагая int (вам также необходимо знать, перегружен ли оператор как член или свободная функция):
bind(static_cast<std::ostream& (std::ostream::*)(int)>(&std::ostream::operator<<), ref(std::cout), _1)