You can leave memory non-initialized if you will be writing on it without reading from it.
I may allocate a large block of memory and leave it untouched then keep a counter saying there are 0 elements in use. The large block has unknown value, it is whatever it happens to be when it was allocated.
I can then write to cell 0 and increment the counter, there is now 1 element in use, the remaining block of memory is still garbage. Write a few more elements, increase the counter, and additional portions of the block have good values. Only the portions of the block that have been written to should ever be accessed, the rest is uninitialized and may point to anything.
It is fine to use that block of data without initializing it to a specific value. Maybe the OS zeroed it out for you before it was freshly assigned to you maybe it contained data from somewhere else in your process that was released, maybe it contains guard values from a debugging library. It doesn't matter what used to be in there, because your well-written code will only use portions of the memory that were written to with valid values.
Incidentally, this is also a common mistake for people who are unfamiliar with C++. Constructors don't write values to every data element, and they don't zero everything. The write values to the things that have values, including the vtable, and leave the rest as whatever happened to be there. Many containers are just fine initializing their size to zero and leaving the contained block untouched and uninitialized.
I get that, but that's not what I mean. He isn't leaving the object uninitialized. He is trying to initialize it with nothing, as though he is trying to initialize it to an uninitialized state. Uninitialized does not equal zero. I'm not understanding what he is trying to accomplish with the code he provided. This may be due to my lack of knowledge of C++.
I can see that as being a valid reason in certain circumstances. It helps ensure that you are not inadvertently stealing someone's IP, for example. However that isn't what he is trying to accomplish. He made it clear he is doing this due to his lack of understanding of what is going on behind the scenes of the STL library.