Вы не можете сделать это.
Третий параметр for_each
- это функциональный объект, который принимает один параметр.for_each
будет выполнять итерацию последовательности, указанной в первом и втором параметрах, и передавать значение каждого элемента этому функциональному объекту.
for_each
полезно, когда его использование менее многословно, чем записьfor
петля.Не похоже, что это так, но если вы действительно хотите использовать for_each
, у вас есть только один вариант.
Написать класс:
template <typename Container>
void draw_all_seq_inside2(Container &c, const rectangle &w) {
class Func
{
const rectangle & _w;
public:
Func(const rectangle &w) : _w(w) {}
void operator()(/* type here */ * val)
{
val->inside_window(_w._btm_left, _w._top_right);
}
};
for_each(c.begin(),c.end(), Func(w));
}
Этот код работает только для компилятора, совместимого с C ++ 11.Если вы используете реализацию C ++ 03, переместите определение класса за пределы draw_all_seq_inside2
.