¿Por qué C ++ hizo alguna distinción entre globales estáticos (enlace interno) y símbolos en un espacio de nombres sin nombre (enlace externo, pero no hay forma de referirse a él desde afuera de todos modos), al introducir este último?
¿Alguna de esas razones sigue siendo válida o hay otras nuevas?
¿Quedan lugares donde aún son diferentes, pero la regla arbitraria que deben ser las uniones anónimas globales (o del espacio de nombres)
static
, y cuáles son?Para los puntos de bonificación, si no quedan buenas razones para que sean diferentes, ¿hay alguna solicitud para que sean equivalentes?
Cuando C ++ introdujo espacios de nombres (C ++ 98), y espacios de nombres específicamente sin nombre, los globales estáticos fueron desaprobados como obsoletos e inferiores a lo nuevo en un ataque de entusiasmo, aunque eso se revirtió con C ++ 11 :
Desaprobación de la palabra clave estática ... ¿no más?
Antes de C ++ 11, los símbolos con enlace interno no podían usarse como argumentos de plantilla: ¿Por qué C ++ 03 requería que los parámetros de plantilla tuvieran enlace externo?