Может ли кто-нибудь объяснить разницу

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 "Спецификации переменных, которые также должны применяться к ссылкам

Цель этих изменений состоит в том, чтобы расширить значение "переменной", чтобы охватить как именованные объекты, так и ссылки, и применять термин последовательно, когда это возможно.