Является ли пространство имен "статическим" все еще не рекомендуется в С++ 11?
Возможный дубликат:
Deprecation of the static keyword… no more?
В С++ 2003 пространство имен static
устарело:
[C++03: 7.3.1.1/2]:
Использование ключевого слова static
устарело, если объявление объектов в области пространства имен (см. приложение D); unnamed-namespace предоставляет превосходную альтернативу.
Я не могу найти, где какое-либо такое предложение существует в С++ 2011 (предлагая недооценку), а 7.1.1
, похоже, не запрещает namespace- static
(и если бы это было, это означало бы, что функция был окончательно удален с языка); однако ни один из случаев не указан в C.2
(который указывает существенные различия между 2003 и 2011 годами.)
Было ли пространство имен static
недоказанным или нет?
Ответы
Ответ 1
Непреднамеренное пространство имен static
было предложено и принято для n3296:
ID: FI 6
Ссылка: D.2 [des.static] ¶ Пункт 1
Комментарий: Использование статического пространства в пространстве имен не должно быть устаревшим. Анонимные пространства имен не являются достаточной заменой для функциональности.
Предлагаемое разрешение: Strike [des.static] полностью.
Владелец: CWG
Проблема: 1012
Disposition: ACCEPTED
Фактически, в разделе C (о совместимости) не перечислены какие-либо изменения, внесенные в пункт D (на устаревание), поэтому трудно сказать "с первого взгляда". Но нет, namespace- static
больше не устаревает в С++ 11.