![]() |
1
9
对的。但可能不是你期望的那样。 [expr.static.cast]
没有
不正确。 [intro.object]
明显缺席的是作业。不
后来的
即使在没有上述所有UB的情况下,通过适当使用
|
![]() |
2
5
路人的回答涵盖了为什么示例程序有未定义的行为。我将尝试回答如何重用存储
转换指针不会自动将对象显式为存在。必须首先构造浮点对象。 这个
您可以使用placement new返回的指针(在我的示例中被丢弃)直接使用新构造的
许多的
更典型的是重用类型的存储
|
![]() |
3
0
我突然进来是因为我觉得至少有一个问题没有回答,没有大声说出来,如果不是真的,我会道歉。我认为这些人很好地回答了这个问题的主要问题:在哪里以及为什么它是未定义的行为;用户2079303很少给出如何解决它的想法。我将尝试回答如何修复代码以及为什么它有效的问题。在开始阅读我的帖子之前,请阅读路人和用户2079303的答案和评论讨论。
对象概念的定义有点复杂,但有意义。这个问题在
proposal Implicit creation of objects for low-level object manipulation
以简化对象模型。在此之前,我们应该通过上述方法显式地创建一个对象。其中一个将工作,在这种情况下是新的布局表达式,新的布局是一个非分配的新表达式,创建一个对象。对于这种特殊情况,这将帮助我们具体说明缺少的数组对象和浮动对象。下面的代码显示了我的想法,包括一些与这些行相关的注释和组装说明(
|
![]() |
Robert E. Brown · 嵌套类的嵌套类的访问权限 6 年前 |
![]() |
YSC · 通过成员指针访问受保护的成员:这是黑客行为吗? 6 年前 |
![]() |
Swift - Friday Pie · 交换数学运算的阶 6 年前 |
![]() |
Acorn · Linux内核的\uu is\u constexpr宏 6 年前 |
![]() |
Acorn · 检测宏中的整数常量表达式 6 年前 |
![]() |
Petr Skocik · 兼容类型并忽略C类型系统中的顶级限定符 6 年前 |