根据cppreference,std::construct_at(T*p, Args&&... args)
相当于
return ::new (const_cast<void*>(static_cast<const volatile void*>(p)))
T(std::forward<Args>(args)...);
演员“通过”的需要/目的是const volatile void*
什么?换句话说,为什么construct_at
不简单地等同于
return ::new (static_cast<void*>(p))
T(std::forward<Args>(args)...);
后一种代码在什么情况下会导致不良行为?