Por que o operador [] do mapa C ++ está chamando o construtor padrão do valor mapeado? [duplicado

Esta pergunta já tem uma resposta aqui:

Por que o argumento do tipo de mapa C ++ requer um construtor vazio ao usar []? 5 respostas

Compilei o seguinte código com g ++, a função de construção A () será chamada ao executar a linha:

m["1"]

Por que isso está acontecendo? Não vejo necessariamente a necessidade de chamar o construtor 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()
}

questionAnswers(1)

yourAnswerToTheQuestion