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
static
e 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?