Продолжение: Что такое переменная в C ++ 14 / C ++ 17? - PullRequest
0 голосов
/ 29 июня 2018

Как следует из названия, этот вопрос уже задавался ранее. Однако ответы относились к C ++ 03 / 0x (11). C ++ 11 (N3337) говорит это о переменных:

[основной] / 6

переменная вводится объявлением ссылки, отличной от нестатического члена данных или объекта. Имя переменной обозначает ссылку или объект.

Это может означать, что переменные по сути являются именованными объектами / ссылками.

Однако в C ++ 14 / C ++ 17 это последнее предложение было изменено на

Имя переменной, , если есть , обозначает ссылку или объект.

, что означает, что переменная не обязательно имеет имя.

Другая интерпретация первого предложения может указывать на то, что переменная является именем, поскольку имя , обозначающее объект / ссылку, также вводится объявлением таких сущностей. Но второе предложение противоречит этому понятию с фразой «имя переменной». Итак, является ли переменная теперь просто гиперным для объекта и ссылки , именованного или нет?

1 Ответ

0 голосов
/ 29 июня 2018

Это изменение было результатом CWG 1769 , обращаясь к состоянию объектов исключений, связанных с неназванными параметрами обработчика перехвата:

catch (std::exception&) // <==
{ 
}

Теперь это переменная. Это упрощает концептуальную модель вокруг объектов исключения.

Первое предложение, которое осталось без изменений, все еще является полным определением термина переменная .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...