Por que o C ++ fez alguma distinção entre globais estáticos (ligação interna) e símbolos em um espaço para nome sem nome (ligação externa, mas não há como se referir a ela de fora de qualquer maneira), ao introduzir a última?
Algum desses motivos ainda é válido ou existem novos?
Ainda existem lugares onde ainda são diferentes, mas a regra arbitrária de que as uniões globais anônimas (ou com espaço de nome) devem ser
statice quais são?Para pontos de bônus, se não houver boas razões para serem diferentes, existe um pedido para torná-los equivalentes?
Quando o C ++ introduziu namespaces (C ++ 98) e, especificamente, os namespaces sem nome, os globos estáticos foram preteridos como obsoletos e inferiores à novidade em um momento de entusiasmo, embora isso tenha sido revertido com o C ++ 11 :
Deprecação da palavra-chave estática… não mais?
Antes do C ++ 11, os símbolos com ligação interna não podiam ser usados como argumentos do modelo: Por que o C ++ 03 exigia que os parâmetros do modelo tivessem ligação externa?