7

При использовании линииЕсли при использовании зарезервированного идентификатора при использовании команды выдается предупреждение?

using std::literals::chrono_literals::operator""s; 

в г ++ 6.3.0, компилятор выдает предупреждение о том:

предупреждения: буквальный оператор суффиксов не предшествует «_» зарезервированы для будущей стандартизации

using std::literals::chrono_literals::operator""s; 

Аналогичное предупреждение также выдается в MSVS. Тем не менее, clang 3.8.0 не вызывает такого предупреждения.

С operator""s определен стандартом для библиотеки хрономов, не следует ли это предупреждать об этом, поскольку мы просто импортируем имя и не определяем его?

+2

Предупреждения, если они не являются обязательной диагностикой, всегда немного субъективны. Хотя я согласен с вами здесь, это просто делает наше общее мнение. – MSalters

ответ

2

Можно утверждать, что формулировка достаточно ясно на этом — [over.literal]/1:

Некоторые буквальные идентификаторы суффикса зарезервированы для будущей стандартизации; см. 17.6.4.3.5. Декларация , в которой literal-operator-id использует такой литеральный суффикс идентификатор плохо сформирован; не требуется диагностика.

Это может быть истолковано как относящиеся к (оператор UDL) декларациям которых «имя» является буквальныма оператора-идентификатор — который, конечно, исключает ваше дело, так как буквального-оператор-идентификатор s неквалифицированные , То же самое касается [reserved.names]/2, где “ контекст ” s - это объявления пользовательских литералов.

+0

Никакой декларации «непосредственно» не содержит * literal-operator-id *, по этому аргументу. Этот нетерминал используется только в двух местах (* template-id * и * unqualified-id *). –

+0

@ T.C. Нет, мой аргумент был не о постановках, а об эквивалентности. Объявление не называет * literal-operator-id *. – Columbo

+0

Ну, 'operator '" s' * является * a * literal-operator-id *, поэтому я не уверен, что получаю аргумент. –

 Смежные вопросы

  • Нет связанных вопросов^_^