Является ли 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.

Другие вопросы по тегам