Можно ли отключить предупреждение GCC о пропущенном подчеркивании в пользовательском литерале?

void operator"" test( const char* str, size_t sz  )
{
std::cout<<str<<" world";
}

int main()
{
"hello"test;
return 0;
}

В GCC 4.7 это создает «предупреждение: буквальные суффиксы операторов, которым не предшествует« _ », зарезервированы для будущей стандартизации [включено по умолчанию]»

Я понимаю, почему генерируется это предупреждение, но GCC говорит «включено по умолчанию».

Можно ли отключить это предупреждение, не отключая все предупреждения с помощью флага -w?

12

Решение

Прочитав несколько комментариев к этому вопросу, я рассмотрел стандарт C ++ 11 (не окончательный вариант N3337).

Когда я сказал: «Я понимаю, почему генерируется это предупреждение», я ошибся.
Я предположил, что стандарт подчеркивает не подчеркивание, а лишь рекомендацию (отсюда скорее предупреждение, чем ошибка).

Но, как сказал Никол Болас, в стандарте используется следующий язык, когда речь идет о пользовательских литералах:

«Буквенные идентификаторы суффиксов, которые не начинаются с подчеркивания, зарезервированы для будущей стандартизации».

«Программа, содержащая такой ud-суффикс, неверна, диагностика не требуется».

Это похоже на язык, используемый для зарезервированных идентификаторов и «альтернативных представлений», таких как «и», «или», «не». Я думаю, это ясно дает понять, что на самом деле это должно быть не предупреждение, а ошибка.

Это может быть не прямой ответ на вопрос «можно ли отключить», но для меня этого ответа достаточно.

Николь, если вы хотите оставить свой комментарий в качестве ответа, я изменю ваш комментарий на помеченный (я думаю, что это возможно).

4

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

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

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