Имею метод, который должен из некоторой базы данных удалять записи, соответствующие условию:
template <class F>
	int RemoveIf(F predicate) 
	{
		int count = 0;
		for (auto item : storage)
		{
			auto mark = stable_partition(item.second.begin(), item.second.end(), predicate(item.first, string event_));
			count += distance(mark, item.second.end());
			item.second.erase(mark, item.second.end());
		}
		return count;
	}
Здесь storage - это 
map<Date, set<string>> (Date - свой тип данных), а predicate - лямбда-функция. И вот в чём проблема. Я знаю, что если в stable_partition передать некоторый диапазон, то в качестве аргумента в функцию сравнения он будет передавать все элементы этого диапазона по очереди. Но моей лямбда-функции нужны два аргумента. И менять её, скорее всего, нельзя. Выглядит она так:
auto predicate = [condition](const Date& date, const string& event) {
                return condition->Evaluate(date, event);
            };
Отсюда вопрос. Как передать два аргумента в лямбда-функцию?