Модификация объекта const после const_cast - UB (я полагаю из-за постоянного распространения). Это все еще UB даже в сочетании с std::launder
(что 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;
}