This short section of code when compiled with: g++ -g -O3 -Wformat=2 bug.cpp
complains {{{ /usr/lib/gcc/i386-redhat-linux/3.4.3/../../../../include/c++/3.4.3/i386-redhat-linux/bits/c++locale.h: In function `int std::__convert_from_v(char*, int, const char*, _Tv, __locale_struct* const&, int) [with _Tv = double]': /usr/lib/gcc/i386-redhat-linux/3.4.3/../../../../include/c++/3.4.3/bits/locale_facets.tcc:1072: instantiated from `_OutIter std::num_put<_CharT, _OutIter>::_M_insert_float(_OutIter, std::ios_base&, _CharT, char, _ValueT) const [with _ValueT = double, _CharT = char, _OutIter = std::ostreambuf_iterator<char, std::char_traits<char> >]' /usr/lib/gcc/i386-redhat-linux/3.4.3/../../../../include/c++/3.4.3/bits/locale_facets.tcc:1216: instantiated from `_OutIter std::num_put<_CharT, _OutIter>::do_put(_OutIter, std::ios_base&, _CharT, double) const [with _CharT = char, _OutIter = std::ostreambuf_iterator<char, std::char_traits<char> >]' /usr/lib/gcc/i386-redhat-linux/3.4.3/../../../../include/c++/3.4.3/bits/locale_facets.h:2353: instantiated from `_OutIter std::num_put<_CharT, _OutIter>::put(_OutIter, std::ios_base&, _CharT, double) const [with _CharT = char, _OutIter = std::ostreambuf_iterator<char, std::char_traits<char> >]' /usr/lib/gcc/i386-redhat-linux/3.4.3/../../../../include/c++/3.4.3/bits/ostream.tcc:246: instantiated from `std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(double) [with _CharT = char, _Traits = std::char_traits<char>]' /usr/lib/gcc/i386-redhat-linux/3.4.3/../../../../include/c++/3.4.3/ostream:219: instantiated from `std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(float) [with _CharT = char, _Traits = std::char_traits<char>]' bug.cpp:16: instantiated from here /usr/lib/gcc/i386-redhat-linux/3.4.3/../../../../include/c++/3.4.3/i386-redhat-linux/bits/c++locale.h:84: warning: format not a string literal, argument types not checked }}} Here is the code {{{ #include <iostream> #include <vector> int main(int argc, char* argv) { std::vector<float> u(10,17); for ( std::vector<float>::const_iterator i=u.begin(); i!=u.end(); ++i ) { const float& f = *i; const size_t index = i-u.begin(); std::cerr << "values in my vector " << index << " " << f << std::endl; } return 0; } }}} -- Summary: -O3 -Wformat=2 complains about floats written to ostream Product: gcc Version: 3.4.3 Status: UNCONFIRMED Severity: minor Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: myles at peakstreaminc dot com GCC build triplet: gcc version 3.4.3 20041212 (Red Hat 3.4.3-9.EL4) http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26970