Может ли кто-нибудь объяснить разницу
n3035 говорит: (2010-02-16)
Переменная вводится объявлением объекта. Переменная name обозначает объект.
n3090 говорит: (2010-03-29)
Переменная вводится декларацией ссылки, отличной от нестатический элемент данных или объекта. Имя переменной обозначает ссылка или объект.
n3242 говорит: (2011-02-28)
Переменная вводится декларацией ссылки, отличной от нестатический элемент данных или объекта. Имя переменной обозначает ссылка или объект.
Может ли кто-нибудь объяснить разницу interms (или) с помощью программы (точно, что она говорит)
это утверждение из стандарта ISO С++
Я видел эту ссылку:
Почему было определено определение переменной во время разработки С++ 11?
но это не (полный смысл) мой вопрос...
Ответы
Ответ 1
Рассмотрим:
int x = 42;
int& rx = x;
x
- переменная; следует ли rx
считать переменной? Многие требования Стандарта относительно переменных без ссылки также применимы к ссылкам. Очевидно, что боль должна оговаривать "переменные или ссылки на переменные" постоянно по всему стандарту, поэтому, если определение переменной может включать ссылки - возможно, со случайными "за исключением ссылок", тогда Стандарт может быть - на балансе - упрощена. Мне кажется, что пересмотры изучали этот баланс.
Ответ 2
Это был CWG defect #633 in ISO C++03
Также проверьте n2993
, который имеет дело с core issue# 633
i.e
"Спецификации переменных, которые также должны применяться к ссылкам
Цель этих изменений состоит в том, чтобы расширить значение "переменной", чтобы охватить как именованные объекты, так и ссылки, и применять термин последовательно, когда это возможно.