This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/29542] New: Error compiling c++ program with overloaded operator<< and postfix increment when using them (cout << obj++)


--------------------------------------------------------------------------
#include <iostream>
using namespace std;
class test
{
                        friend ostream &operator <<(ostream &, test &);
                        friend test operator ++(test &, int);
         public:
                        test(int = 0);
         private:
                        int t;
};

test::test(int g)
{
         t = g;
}
test operator ++(test &tt, int)
{
         test h = tt;
         (tt.t)++;
         return h;
}
ostream &operator <<(ostream &out, test &tt)
{
         cout << tt.t <<endl;
         return out;
}

int main()
{
         test t(5);
         cout << t;
         cout << t++;
         return 0;
}
------------------------------------------------------------------------------
$ g++ -o test test.cpp
test.cpp: In function `int main()':
test.cpp:37: error: no match for 'operator<<' in 'std::cout <<
operator++(((test&)(&t)), 0)'
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/bits/ostream.tcc:63:
note: candidates are: std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT,
_Traits>&(*)(std::basic_ostream<_CharT, _Traits>&)) [with _CharT = char,
_Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/bits/ostream.tcc:74:
note:                 std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ios<_CharT,
_Traits>&(*)(std::basic_ios<_CharT, _Traits>&)) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/bits/ostream.tcc:86:
note:                 std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT,
_Traits>::operator<<(std::ios_base&(*)(std::ios_base&)) [with _CharT = char,
_Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/bits/ostream.tcc:121:
note:                 std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>::operator<<(long int) [with _CharT = char,
_Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/bits/ostream.tcc:155:
note:                 std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>::operator<<(long unsigned int) [with _CharT
= char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/bits/ostream.tcc:98:
note:                 std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>::operator<<(bool) [with _CharT = char,
_Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/ostream:178: note:       
         std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(short int) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/ostream:189: note:       
         std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(short unsigned int) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/ostream:193: note:       
         std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(int) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/ostream:204: note:       
         std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(unsigned int) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/bits/ostream.tcc:179:
note:                 std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT =
char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/bits/ostream.tcc:214:
note:                 std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>::operator<<(long long unsigned int) [with
_CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/bits/ostream.tcc:238:
note:                 std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>::operator<<(double) [with _CharT = char,
_Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/ostream:219: note:       
         std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(float) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/bits/ostream.tcc:261:
note:                 std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>::operator<<(long double) [with _CharT =
char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/bits/ostream.tcc:284:
note:                 std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>::operator<<(const void*) [with _CharT =
char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/bits/ostream.tcc:307:
note:                 std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_streambuf<_CharT,
_Traits>*) [with _CharT = char, _Traits = std::char_traits<char>]
test.cpp:28: note:                 std::ostream& operator<<(std::ostream&,
test&)
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/ostream:504: note:       
         std::basic_ostream<char, _Traits>&
std::operator<<(std::basic_ostream<char, _Traits>&, const unsigned char*) [with
_Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/ostream:499: note:       
         std::basic_ostream<char, _Traits>&
std::operator<<(std::basic_ostream<char, _Traits>&, const signed char*) [with
_Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/bits/ostream.tcc:612:
note:                 std::basic_ostream<char, _Traits>&
std::operator<<(std::basic_ostream<char, _Traits>&, const char*) [with _Traits
= std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/bits/ostream.tcc:567:
note:                 std::basic_ostream<_CharT, _Traits>&
std::operator<<(std::basic_ostream<_CharT, _Traits>&, const char*) [with _CharT
= char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/ostream:465: note:       
         std::basic_ostream<char, _Traits>&
std::operator<<(std::basic_ostream<char, _Traits>&, unsigned char) [with
_Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/ostream:460: note:       
         std::basic_ostream<char, _Traits>&
std::operator<<(std::basic_ostream<char, _Traits>&, signed char) [with _Traits
= std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/bits/ostream.tcc:505:
note:                 std::basic_ostream<char, _Traits>&
std::operator<<(std::basic_ostream<char, _Traits>&, char) [with _Traits =
std::char_traits<char>]
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/ostream:449: note:       
         std::basic_ostream<_CharT, _Traits>&
std::operator<<(std::basic_ostream<_CharT, _Traits>&, char) [with _CharT =
char, _Traits = std::char_traits<char>]


-- 
           Summary: Error compiling c++ program with overloaded operator<<
                    and postfix increment when using them  (cout << obj++)
           Product: gcc
           Version: 3.3.4
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: noxx at mail dot md


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29542


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]