Follow-up: C++14/C++17 中的变量到底是什么?

Follow-up: What exactly is a variable in C++14/C++17?

如标题所示,this question has been asked before. 然而,答案与 C++03/0x(11) 有关。 C++11 (N3337) 关于变量的说法:

[basic]/6:

A variable is introduced by the declaration of a reference other than a non-static data member or of an object. The variable’s name denotes the reference or object.

这可能意味着变量实际上被命名为 objects/references。

然而,在 C++14/C++17 中,最后一句被更改为

The variable’s name, if any, denotes the reference or object.

这意味着变量不一定有名字。

对第一句话的不同解释可能表明变量 一个名称,因为 name 表示 object/reference 也由此类实体的声明引入。但是第二句话与短语 "variable's name" 的概念相矛盾。所以,variable 现在只是 objectreference 的上位词,无论是命名还是不是吗?

此更改是 CWG 1769 的结果,解决了绑定到未命名捕获处理程序参数的异常对象的状态:

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

现在这是一个变量。这简化了异常对象的概念模型。

第一句保持不变,仍然是术语变量的完整定义。