Annex F (informative) Core undefined behavior [ub]

F.2 [basic]: Basics [ub.basic]

F.2.1[ub:intro.object.implicit.create]
Specified in: [intro.object]

For each operation that is specified as implicitly creating objects, that operation implicitly creates and starts the lifetime of zero or more objects of implicit-lifetime types ([basic.types]) in its specified region of storage if doing so would result in the program having defined behavior.
If no such set of objects would give the program defined behavior, the behavior of the program is undefined.
[Example 1: void f() { void *p = malloc(sizeof(int) + sizeof(float)); *reinterpret_cast<int*>(p) = 0; *reinterpret_cast<float*>(p) = 0.0f; // undefined behavior, cannot create // both int and float in same place } — end example]