This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libstdc++/23317] operator>>( istream&, int& ) does not work for enum values
- From: "pinskia at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 10 Aug 2005 15:37:02 -0000
- Subject: [Bug libstdc++/23317] operator>>( istream&, int& ) does not work for enum values
- References: <20050810152614.23317.peter@gamelogic.com>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From pinskia at gcc dot gnu dot org 2005-08-10 15:37 -------
In 3.4 and above, I get:
t4.cc:16: error: ambiguous overload for ?operator>>? in ?Temp >> (int)Val?
/home/gates/pinskia/linux/lib/gcc/i686-pc-linux-gnu/4.1.0/../../../../include/c++/4.1.0/istream:
131: note: candidates are: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::
operator>>(std::basic_istream<_CharT, _Traits>& (*)(std::basic_istream<_CharT, _Traits>&)) [with
_CharT = char, _Traits = std::char_traits<char>] <near match>
/home/gates/pinskia/linux/lib/gcc/i686-pc-linux-gnu/4.1.0/../../../../include/c++/4.1.0/istream:
134: note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::
operator>>(std::basic_ios<_CharT, _Traits>& (*)(std::basic_ios<_CharT, _Traits>&)) [with _CharT =
char, _Traits = std::char_traits<char>] <near match>
/home/gates/pinskia/linux/lib/gcc/i686-pc-linux-gnu/4.1.0/../../../../include/c++/4.1.0/istream:
137: note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::
operator>>(std::ios_base& (*)(std::ios_base&)) [with _CharT = char, _Traits = std::char_traits<char>]
<near match>
/home/gates/pinskia/linux/lib/gcc/i686-pc-linux-gnu/4.1.0/../../../../include/c++/4.1.0/istream:
230: note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::
operator>>(std::basic_streambuf<_CharT, _Traits>*) [with _CharT = char, _Traits = std::
char_traits<char>] <near match>
I don't think this is valid code.
Actually it is not, you are invoking one of the bad extensions in GCC which was removed for 3.4 called
the lvalue extension.
So this was fixed to reject the code in 3.4.0.
--
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Component|c++ |libstdc++
Resolution| |INVALID
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23317