https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66771

--- Comment #3 from H.J. Lu <hjl.tools at gmail dot com> ---
[hjl@gnu-ivb-1 build_base_lnx32e-gcc.0000]$ cat foo.cc
#include <iostream>

char buf[300];
bool readLine(std::istream& m_input)
{
  if (m_input.getline(buf, sizeof(buf)) == 0)
    return false;

  return true;
}
[hjl@gnu-ivb-1 build_base_lnx32e-gcc.0000]$ g++ -O2 -c foo.cc
[hjl@gnu-ivb-1 build_base_lnx32e-gcc.0000]$ g++ -O2 -c foo.cc -std=c++11
foo.cc: In function \u2018bool readLine(std::istream&)\u2019:
foo.cc:6:41: error: no match for \u2018operator==\u2019 (operand types are
\u2018std::basic_istream<char>::__istream_type {aka
std::basic_istream<char>}\u2019 and \u2018int\u2019)
   if (m_input.getline(buf, sizeof(buf)) == 0)
                                         ^
foo.cc:6:41: note: candidate: operator==(int, int) <built-in>
foo.cc:6:41: note:   no known conversion for argument 1 from
\u2018std::basic_istream<char>::__istream_type {aka
std::basic_istream<char>}\u2019 to \u2018int\u2019
In file included from /usr/include/c++/5.1.1/bits/locale_facets.h:48:0,
                 from /usr/include/c++/5.1.1/bits/basic_ios.h:37,
                 from /usr/include/c++/5.1.1/ios:44,
                 from /usr/include/c++/5.1.1/ostream:38,
                 from /usr/include/c++/5.1.1/iostream:39,
                 from foo.cc:1:
/usr/include/c++/5.1.1/bits/streambuf_iterator.h:204:5: note: candidate:
template<class _CharT, class _Traits> bool std::operator==(const
std::istreambuf_iterator<_CharT, _Traits>&, const
std::istreambuf_iterator<_CharT, _Traits>&)
     operator==(const istreambuf_iterator<_CharT, _Traits>& __a,
     ^
/usr/include/c++/5.1.1/bits/streambuf_iterator.h:204:5: note:   template
argument deduction/substitution failed:
...

Reply via email to