Почему в C ++ проводилось какое-либо различие между статическими глобальными переменными (внутренняя связь) и символами в безымянном пространстве имен (внешняя связь, но в любом случае нет возможности ссылаться на нее извне) при представлении последнего?
Какие-либо из этих причин все еще действительны, или есть новые?
Есть ли места, где они все еще различны, кроме произвольного правила, которым должны быть анонимные глобальные (или пространства имен) союзы
static
, и каковы они?Для бонусных баллов, если не осталось веских причин для их отличия, есть ли просьба сделать их эквивалентными?
Когда C ++ ввел пространства имен (C ++ 98) и, в частности, безымянные пространства имен, статические глобальные перемены устарели как устаревшие и уступали новым в борьбе за энтузиазм, хотя это было отменено в C ++ 11 :
Устаревание статического ключевого слова… больше не надо?
До C ++ 11 символы с внутренней связью не могли использоваться в качестве аргументов шаблона: почему C ++ 03 требовал, чтобы параметры шаблона имели внешнюю связь?