Yes, using a char[]
as placement-new storage is technically undefined behavior (UB) according to the C++ standard, despite being widely used in practice. The reason lies in C++'s rules about object lifetimes and storage, introduced and clarified in C++17 and C++20.