任何人都可以解释这种差异

时间:2011-03-22 05:56:47

标签: c++ c++11

n3035说:(2010-02-16)

  

变量由对象的声明引入。变量的       name表示对象。

n3090说:(2010-03-29)

  

变量是通过声明除a之外的引用引入的       非静态数据成员或对象。变量的名称表示       参考或对象。

n3242说:(2011-02-28)

  

变量是通过声明除a之外的引用引入的       非静态数据成员或对象。变量的名称表示       参考或对象。

任何人都可以在程序的帮助下解释差异(或者说)(正是它所说的)

这是ISO标准C ++的声明

我看到了这个链接:

Why was the definition of a variable changed during the development of C++11?

但这不是(完全意义)我的问题......

2 个答案:

答案 0 :(得分:7)

考虑:

int x = 42;
int& rx = x;

x是一个变量; rx也应该被视为变量吗?许多标准关于非参考变量的要求也适用于参考文献。在整个标准中不得不经常规定“变量或引用变量”显然是一种痛苦,所以如果变量的定义可以包括引用 - 也许偶尔会出现“除引用之外”,那么标准可能是 - 总的来说 - 简化。在我看来,修改正在探索这种平衡。

答案 1 :(得分:6)

这是CWG defect #633 in ISO C++03

另请查看处理core issue# 633的{​​{3}},即 “适用于参考文献的变量规范”

  
    

这些变化的目标是扩展“变量”的含义,以包含命名对象和引用,并在可行的情况下始终如一地应用该术语。