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) 关于变量的说法:
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。
The variable’s name, if any, denotes the reference or object.
这意味着变量不一定有名字。
对第一句话的不同解释可能表明变量 是 一个名称,因为 name 表示 object/reference 也由此类实体的声明引入。但是第二句话与短语 "variable's name" 的概念相矛盾。所以,variable 现在只是 object 和 reference 的上位词,无论是命名还是不是吗?
此更改是 CWG 1769 的结果,解决了绑定到未命名捕获处理程序参数的异常对象的状态:
catch (std::exception&) // <==
{
}
现在这是一个变量。这简化了异常对象的概念模型。
第一句保持不变,仍然是术语变量的完整定义。
如标题所示,this question has been asked before. 然而,答案与 C++03/0x(11) 有关。 C++11 (N3337) 关于变量的说法:
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。
The variable’s name, if any, denotes the reference or object.
这意味着变量不一定有名字。
对第一句话的不同解释可能表明变量 是 一个名称,因为 name 表示 object/reference 也由此类实体的声明引入。但是第二句话与短语 "variable's name" 的概念相矛盾。所以,variable 现在只是 object 和 reference 的上位词,无论是命名还是不是吗?
此更改是 CWG 1769 的结果,解决了绑定到未命名捕获处理程序参数的异常对象的状态:
catch (std::exception&) // <==
{
}
现在这是一个变量。这简化了异常对象的概念模型。
第一句保持不变,仍然是术语变量的完整定义。