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

При использовании линии

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

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

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

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

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

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

8

Решение

Возможно, формулировка достаточно ясна по этому вопросу —[Over.literal] / 1:

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

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

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]