¿El constructor predeterminado de std :: pair <> establece los tipos básicos (int, etc.) en cero?

Después de escribir:

std::pair<int, int> x;

¿Estoy garantizado que x.first y x.second son cero? ¿O podrían tener algún valor?

La razón por la que me importa es porque estoy tratando de determinar si un mapa cuyos valores son punteros está garantizado que devolverá NULL si accedo a un elemento que no está en el mapa. Es decir, si lo hago:

std::map<int, void*> my_map;
std::cout << int(my_map[5]) << std::endl;

¿Entonces estoy garantizado para obtener cero (NULL)? ¿O el comportamiento es indefinido?

Respuestas a la pregunta(8)

Su respuesta a la pregunta