¿Por qué el operador [] de C ++ Map llama al constructor predeterminado de valor mapeado? [duplicar

Esta pregunta ya tiene una respuesta aquí:

¿Por qué el argumento del tipo de mapa C ++ requiere un constructor vacío cuando se usa []? 5 respuestas

Compilé el siguiente código con g ++, se llamará a la función de construcción A () al ejecutar la línea:

m["1"]

¿Por qué está pasando esto? No veo necesariamente que llame al constructor aquí.

struct A
{
   int mem;
   A(int arg){}
   A(){}
};
int main()
{
   unordered_map<string, A> m;
   m["1"]; // will call A(), but why?
   m.find("1")->second; // will not call A()
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta