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

Reply via email to