const cast和std洗衣店

mkm*_*afa 3 c++ c++17

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

#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;
}
Run Code Online (Sandbox Code Playgroud)

T.C*_*.C. 7

是.尝试修改const对象的是UB,period.