Я думаю, что оператор :: может быть унарным в случае доступа к глобальной области. Во всех остальных случаях :: рассматривается как двоичный оператор, а правило оценки для оператора :: в случае N1::N2::N3::n эквивалентно следующему:
((N1::N2)::N3)::n // Error: ::n has not been declared
Но эта строка не компилируется. Это очень любопытно. В стандарте нет информации об оценке nested-name-specifier. Было бы естественно, если оценка nested-name-specified эквивалентна qualified/unqualified-id, , но она не говорит об этом нигде в стандарте.. Можно ли предположить, что оценка a nested-name-specifier зависит?