Доброе время суток!
читая
здесь про то как инженеры гугля используют clang для поиска ошибок в своей маленькой мультимиллионной базе кода я сказал себе "а чем мы хуже?"
И не долго думая в виртуалке для экспериментов с линуксом установил clang и в мейкфайле проекта в пункте
%.o : %.cpp
заменил g++ -> clang и запустил make.
В результате кроме всего прочего нашлось и вот такое в stlport 5.2.1
bug ticket
в файле stlport/stl/_fstream.c
bool __ok = this->is_open();
if (_M_in_output_mode) {
__ok = __ok && !_Traits::eq_int_type(this->overflow(traits_type::eof()),
traits_type::eof());
__ok == __ok && this->_M_unshift();
//тут stlport/stl/_fstream.c:87:10: warning: self-comparison always evaluates to true
}
else if (_M_in_input_mode)
this->_M_exit_input_mode();
...
строка с ошибкой разумеется подразумевалась как
__ok = __ok && this->_M_unshift();
Ну и мелочь типа использования шаблона строк до его определения в стримах, которая шла уже не как warning.
Рекомендую к использованию!