为const变量分配相同的值会导致C++中的UB吗?

Sam*_*ime 0 c++ const undefined-behavior

鉴于以下C++代码:

#include <iostream>

int main()
{
    const int i = 1;
    *const_cast<int*>(&i) = 1; // Not allowed but doesn't do anything?
    std::cout << i << "\n";
}
Run Code Online (Sandbox Code Playgroud)

问题:上面的代码是否调用UB(未定义的行为)?我知道抛弃const并为iUB中的结果赋值,因为我们不允许更改const变量的值.但是,在上面的代码中,我实际上没有更改 - 的值i- 那么,这仍然是UB吗?

iBu*_*Bug 5

是.它仍然是UB.

尝试更改const变量是UB,而不仅仅是分配值.

从N4296,第1.9节,第4段:

本国际标准中将某些其他操作描述为未定义(例如,尝试修改const对象的效果).