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:
...