Здравствуйте, Marty, Вы писали:
M>Не очень понятно, зачем ты разделил вектор на m_head и вектор m_tail?
Это убивает сразу нескольких зайцев. Во-первых, не нужно проверять и делать специальную обработку для пустого множества обработчиков. Во-вторых, для итерирования по коллеции я могу использовать более аккуратный цикл range for вместо циклов с использованием итераторов или счетчиков цикла. Ну и в-третьих, так лучше видно в коде, что делегатор достает именно из этого элемента. Семантика этого элемента немного отличается от остальных, поэтому лучше его сразу обособить, так код становится проще и яснее.
Ты можешь попробовать, ради эксперимента, слить этот элемент с общей коллекцией. Потом посмотришь и сравнишь. Не забудь при этом сравнить реализации с точки зрения безопасности и обработки ошибок. Только лучше бери сразу последнюю версию:
http://coliru.stacked-crooked.com/a/d66ee722f822d4fc.