Почему стандартная грамматика C ++ не охватывает этот случай?

В основном я имею в виду стандарт C ++ 03, но после беглого взгляда он должен быть применим и к стандарту C ++ 11.Следующий код скомпилирован и успешно выполнен в VC ++ 2010:Обратите внимание на синтаксис ---- +: = 1 =: + ---- для ссылки на шаблон, определенный в глобальном пространстве имен.Это не то же самое, что синтаксис ---- +: = 2 =: + ----, где оператору ---- +: = 3 =: + ---- что-то предшествует.С помощью некоторых других инструментов я попытался проанализировать это, используя грамматику строго из C ++ 03, но это дало мне ошибки, и мне кажется, что стандарт принимает только ---- +: = 4 =: + ----форму в объявлении заголовка класса.При более внимательном рассмотрении проблема в том, что ---- +: = 5 =: + ---- определяется этой грамматикой в ​​стандарте:И поскольку ---- +: = 7 =: + ---- имеет форму ---- +: = 8 =: + ---- ..., он не принимает мои ----+: = 9 =: + ---- .У меня вопрос: почему стандарт C ++ не допускает форму :: CC?Это просто неправильная интерпретация стандартной грамматики?Если правильная грамматика выглядит так:Обратите внимание, что приведенная выше форма действительно используется стандартом где-то еще, например, при указании идентификатора декларатора:
7 голосов | спросил JavaMan 10 Mayam16 2016, 11:06:28

0 ответов


Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132