c ++ 03: construtor padrão para tipos de build-in em std :: map

Eu sempre pensei que o seguinte código

std::map<int, int> test;
std::cout << test[0] << std::endl;

imprimiria valor aleatório, pois criaria valor unitizado no mapa. No entanto, verifica-se que int criado é realmente sempre inicializado com zero E os tipos internos padrão também são inicializados com zero em determinadas circunstância

A pergunta é: quando a zeração inicial é executada para tipos padrão (int / char / float / double / size_t)? Tenho certeza de que se eu declararint i; no meio do nada, ele conterá dados aleatório

P.S. A questão é sobre o padrão C ++ 03. O motivo da pergunta é que agora não tenho mais certeza quante para fornecer inicialização para tipos internos, como int / float / size_t ou quando puder ser omitido com seguranç

questionAnswers(10)

yourAnswerToTheQuestion