и главный вопрос: как "обработчик" проваливается ниже?
Когда concrete handler #1 не проходит условие, он вызывает обработчик базового класса, у которого есть указатель с владением на concrete handler #1. Почему он его пропускает и переходит к concrete handler #2?
https://godbolt.org/z/or1fzKh1x
А почему он не заходит снова в concrete handler #1? Ведь в базовом return m_next_handler->handle(request);?
Там как реализовано, обычно либо признак того, что это обработано, возвращается из обработчика, либо признак того, что надо продолжать.
Кстати, а ты какой уровень? (Junior, Middle, Senior)?
Обсуждают сегодня