评估对象的创建意味着什么?



我在标准 12.2 中遇到了句子"即使临时对象的创建未被评估",我不明白它们的意思。

所以我读了关于表达式的内容,但我仍然不明白它们的含义。我想,原因是我很难尝试采用他们对未计算表达式的定义并将其应用于上述引文。

那么,任何人都可以告诉我"即使临时对象的创建未经评估"是什么意思吗?

上下文:

类类型的临时是在各种上下文中创建的:绑定 引用 prvalue (8.5.3(,返回 prvalue (6.6.3(,a 创建 prvalue 的转换 (4.1, 5.2.9, 5.2.11, 5.4(, 抛出 异常 (15.1(,输入处理程序 (15.3(,以及在某些 初始化 (8.5(。[ 注意:异常对象的生存期为 在 15.1 中描述。— 尾注 ] 即使创建 临时对象未评估(第5条(或以其他方式避免 (12.8(,应遵守所有语义限制,就好像 临时对象已被创建,后来被销毁。[ 注意:即使 没有调用析构函数或复制/移动构造函数,所有 语义限制,例如可访问性(第 11 条(以及是否 删除该功能(8.4.3(,应满足。然而,在 用作 decltype-specifier (5.2.2(,没有引入临时,所以 上述规定不适用于任何此类函数调用的 PR值。— 尾注 ]

在某些上下文中,您可以键入实际上不会在运行时执行的表达式。例如,sizeofdecltype的参数实际上并没有被执行。它们的存在只是为了让编译器计算结果的类型。

这些上下文称为"未评估上下文"。这就是它在说的。它的意思是,即使在未计算的上下文中,构造对象的表达式仍然必须是对象初始化的有效形式。

相关内容

  • 没有找到相关文章

最新更新