Недавно у меня была ошибка в аналогичном контексте следующего:
double getSomeValue()
{
return 4.0;
}
...
std::string str;
str = getSomeValue();
Как вы можете видеть здесь, легко заметить проблему, но в большой базе кода, где getSomeValue()
не находится в том же файле с кодом вызова, может быть трудно обнаружить этот double
до std::string
silent преобразование. GCC компилирует этот код с помощью -Wall -Wextra -Werror
(здесь выводится пример, я не знаю, какие флаги были использованы: http://ideone.com/BTXBFk).
Как я могу заставить GCC выдавать предупреждения для этих опасных неявных преобразований? Я пробовал -Wconversion
, но он очень строгий, и он вызывает ошибки в большинстве включенных заголовков для обычных случаев, таких как unsigned - 1
. Есть ли более слабая версия -Wconversion
?