是否可以访问 std::for_each 迭代器,所以我可以使用 lambda 从 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 作为错误源)。