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