*path1.begin() == *path2.begin()
Это, однако, будет означать, что «c: / foo» разделяет базу с «c: / bar», что может быть непреднамеренным.
for( boost::filesystem::path::iterator itrLeft( path1.begin() ), itrRight( path2.begin() ); *itrLeft == *itrRight && itrLeft != path1.end() && itrRight != path2.end(); ++itrLeft, ++itrRight )
Таким образом, вы можете увидеть, сколько атомов совпадают, я предлагаю сначала использовать boost :: filesystem :: absolute, если вы хотите сделать его устойчивым.