gpt4 book ai didi

c++ - const cast 和 std launder

转载 作者:太空狗 更新时间:2023-10-29 19:47:37 32 4
gpt4 key购买 nike

const_cast 之后修改一个 const 构造的对象是 UB(我相信是由于不断传播)。即使与 std::launder 结合使用,它仍然是 UB 吗? (哪个 AFAIK 阻止了一些优化,例如 const 传播)?

#include <new>
#include <iostream>

struct C
{
int i;
};

int main(const int argc, const char * const * const argv)
{
const C c{1};
auto x = std::launder(const_cast<C*>(&c));
++x->i;
std::cout << x->i << std::endl;
std::cout << c.i << std::endl;

return 0;
}

最佳答案

是的。尝试修改 const 对象是 UB,句点。

关于c++ - const cast 和 std launder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53317303/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com