Мы только что обнаружили проблему в нашей кодовой базе, где оператор находится после оператора возврата.
Например,
std::string MyClass::addElement(Type1 &item, const std::string ¶m2)
{
if (param2.empty())
{
// logging
return "";
}
return m_database->addElement(item, param2, item.status, true);
// here I would expect an unreachable code warning
m_database->updateTableA(item.p1, item.p2, item.p3, AType::AType23);
}
Что я не понимаю, почему наш компилятор (GCC4.8.5 и 7) не выдает предупреждение?
Скомпилируем с -std=c++0x -Wall -Wextra -Wsign-compare -Wunknown-pragmas -Wold-style-cast -Wshadow -Wfatal-errors