Reinterpret_cast 和创建普通的默认可构造对象
cppreference 用于声明reinterpret_cast 可用于创建普通的默认可构造对象在适当对齐的存储上。然而,此声明已被更正,指出在这种情况下需要 place-new 来正式引入对象并避免未定义的行为。
对象生命周期何时开始?
考虑到此更正,很明显,在提供的代码中不存在 X 对象。因此,任何访问其成员的尝试(例如,reinterpret_cast
alignas() 的作用
alignas() 说明符确保存储适当对齐以容纳 X。 它不会创建X对象。如果alignas()声明和reinterpret_cast之间存在分支,它不会改变不存在X对象的事实。
C 标准的变化
此行为的解释在 C 之间保持一致 11和C 1z。这两个标准都不支持通过reinterpret_cast 创建没有显式构造的对象的概念。
以上是何时必须将 Placement-New 与'reinterpret_cast”一起使用来创建简单的默认可构造对象?的详细内容。更多信息请关注PHP中文网其他相关文章!