В качестве продолжения " Что это за сумасшедший синтаксис C ++ 11 ==> struct: bar {} foo {};? ", я ожидаю, что следующий C ++ 0xкод для компиляции:
struct x {};
struct :::x {} y {};
Однако GCC 4.7.0 20110731 сообщает мне:
ошибка: глобальная квалификация имени класса недопустима перед ':' token
И когда я делаю шаг назад к здравомыслию и даю имя второму UDT:
struct x {};
struct a:::x {} y{}; // remember, identical to `a::: x` or `a: ::x` or `a:: :x` etc
, ошибка:
ошибка: 'a' имеетне было объявлено
Кажется, что три двоеточия лексизированы как <::> <:>
, а не <:> <::>
, но это может быть ясно выведено из [окончательного варианта] стандарт?
И может ли быть связан вопрос " Глобальная квалификация в объявлениях класса class-head "?