Я думаю, что оператор ::
может быть унарным в случае доступа к глобальной области. Во всех остальных случаях ::
рассматривается как двоичный оператор, а правило оценки для оператора ::
в случае 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
зависит?