void operator"" test( const char* str, size_t sz )
{
std::cout<<str<<" world";
}
int main()
{
"hello"test;
return 0;
}
В GCC 4.7 это создает «предупреждение: буквальные суффиксы операторов, которым не предшествует« _ », зарезервированы для будущей стандартизации [включено по умолчанию]»
Я понимаю, почему генерируется это предупреждение, но GCC говорит «включено по умолчанию».
Можно ли отключить это предупреждение, не отключая все предупреждения с помощью флага -w?
Прочитав несколько комментариев к этому вопросу, я рассмотрел стандарт C ++ 11 (не окончательный вариант N3337).
Когда я сказал: «Я понимаю, почему генерируется это предупреждение», я ошибся.
Я предположил, что стандарт подчеркивает не подчеркивание, а лишь рекомендацию (отсюда скорее предупреждение, чем ошибка).
Но, как сказал Никол Болас, в стандарте используется следующий язык, когда речь идет о пользовательских литералах:
«Буквенные идентификаторы суффиксов, которые не начинаются с подчеркивания, зарезервированы для будущей стандартизации».
«Программа, содержащая такой ud-суффикс, неверна, диагностика не требуется».
Это похоже на язык, используемый для зарезервированных идентификаторов и «альтернативных представлений», таких как «и», «или», «не». Я думаю, это ясно дает понять, что на самом деле это должно быть не предупреждение, а ошибка.
Это может быть не прямой ответ на вопрос «можно ли отключить», но для меня этого ответа достаточно.
Николь, если вы хотите оставить свой комментарий в качестве ответа, я изменю ваш комментарий на помеченный (я думаю, что это возможно).
Других решений пока нет …