为什么是[class.temporary]/2中的Note3?段落(2.1)到(2.6)不应该具有规范地位吗?

[类.临时]/2

临时对象的实现通常会尽可能延迟,以避免创建不必要的临时对象。

[注3:临时对象具体化:

(2.1) 将引用绑定到纯右值时 ([dcl.init.ref], [expr.type.conv], [expr.dynamic.cast], [expr.static.cast], [expr.const.cast] , [expr.cast]),

(2.2) 对类纯右值 ([expr.ref], [expr.mptr.oper]) 执行成员访问时,

(2.3) 当对数组纯右值 ([conv.array], [expr.sub]) 执行数组到指针的转换或下标时,

(2.4)std?::?initializer_­list<T>从花括号初始化列表([dcl.init.list])初始化类型对象时,

(2.5) 对于某些未计算的操作数 ([expr.typeid], [expr.sizeof]),和

(2.6) 当具有非cv 类型的纯右void值出现为丢弃值表达式 ([expr.prop]) 时。
— 尾注]

回答

引用的部分([dcl.init.ref] 等)具有规范性的措辞,准确地指定了临时物化发生的时间。此注释仅作为快速参考存在,因此您不必查看整个标准来查找发生临时物化的所有情况。如果它是规范的,那么它充其量是多余的,最坏的情况是相互冲突。使其非规范化可以保留其有用性,同时避免任何潜在问题。


以上是为什么是[class.temporary]/2中的Note3?段落(2.1)到(2.6)不应该具有规范地位吗?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>