I noticed that std::map seems to know how to init it's data even when it is pretty complex.
For example, if there is a type containing an int, even when the default constructor does not initialize it, std::map will initialize it to 0.
How does it do this?
When an object is created a constructor is bound to run whether a default or user defined or any other and in that it will initialize the data.