Стандартной библиотекой по умолчанию в Mac OS является libc ++.Стандартной библиотекой по умолчанию в Ubuntu является libstdc ++.
. Вы можете попробовать Ubuntu, передав компилятору -stdlib=libc++
и посмотреть, что произойдет.
Разница в том (подозреваю, но неточно знаю) что в libc ++ string::iterator
есть тип в пространстве имен std, поэтому поиск ADL происходит, но в libstdc ++ итераторы просто char *
, и поскольку они не живут в пространстве имен std, поиск в этом пространстве имен не происходит.