Я читал, что для того, чтобы пользовательский контейнер работал с циклом for на основе диапазона, «вещи» должны находиться в одном пространстве имен. Какие вещи должны находиться в одном пространстве имен? Бесплатные функции начала и конца и итератор, который они возвращают? Или начальные функции и переданный им контейнер?
Подробнее здесь: https://stackoverflow.com/questions/791 ... namespaces