Можно ли получить доступ к итератору std::for_each, чтобы я мог стереть текущий элемент из std::list с помощью лямбда (как показано ниже)
typedef std::shared_ptr<IEvent> EventPtr;
std::list<EventPtr> EventQueue;
EventType evt;
...
std::for_each(
EventQueue.begin(), EventQueue.end(),
[&]( EventPtr pEvent )
{
if( pEvent->EventType() == evt.EventType() )
EventQueue.erase( ???Iterator??? );
}
);
Я читал об использовании [](typename T::value_type x){ delete x; } здесь, на SO, но VS2010, похоже, не нравится это утверждение (подчеркивает T как источник ошибки).