Здравствуйте, Александр Шаргин, Вы писали:
К сожалению данный код не работает корректно в VS2008:
Ваш код:
for(it = m_DelegateList.begin(); it != --m_DelegateList.end(); ++it)
static_cast<IDelegate*> (*it)->Invoke(ARGS);
Мне пришлось поменять на
if ( !m_DelegateList.empty() )
{
for(it = m_DelegateList.begin(); it != --m_DelegateList.end(); ++it)
static_cast<IDelegate*> (*it)->Invoke(ARGS);
}
так как рантайм VS2008 выбрасывает исключение нарушения границ доступа при попытке декрементировать итератор который возвращен методом end().
Best Regards. Anton.