The provided answers are wrong. Construction is not always required.
C++11, 3.8 Lifetime
The lifetime of an object of type T begins when:
— storage with the proper alignment and size for type T is obtained, and
— if the object has non-trivial initialization, its initialization is complete.
Notes:
`malloc()` guarantees the first condition (by the C standard).
the "non-trivial initialization" condition was later modified in cpp14 and cpp17, but the modification still preserves the fact there are "trivially" (before cpp17) or "vacously" (from cpp17) initializable objects that do not require the ctor call to start their lifetime.