help-gplusplus
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: error: ambiguous overload for 'operator <<' in ...


From: glen
Subject: Re: error: ambiguous overload for 'operator <<' in ...
Date: Fri, 27 Oct 2006 12:44:11 -0400
User-agent: Pan/0.14.2.91 (As She Crawled Across the Table)

On Thu, 26 Oct 2006 22:43:44 +0200, Ulrich Eckhardt wrote:

> glen wrote:
>>   template<typename C>
>>   std::ostream& operator<< (std::ostream& op, const C& cpi )
>>   {
>>    typename C::const_iterator start( cpi.begin() );
>>    typename C::const_iterator end( --(cpi.end() ));
>>    typename C::const_iterator iter; 
>>    op << "{";
>>    for (iter=start;iter!=end; ++iter){
>>     op<<*iter<<",";
>>    }
>>    op<<*iter<<"}";
>>    return op;
>> };
>> 
>> The offending lines are the 
>>       op<<"{";
>> and
>>       op<<"}";
> 
> Several things:
> - You didn't provide a minimal example.
> - You didn't provide the errormessage.
> - The last semicolon is wrong.
> - Your indentation is inconsistent, making it harder for the reader.
> - Your code invokes undefined behaviour on an empty container.
> 
>> apparently it doesn't know what to do with a simple string
> 
> Well, anyways, your operator's signature matches _EVERYTHING_, including a
> character literal.
> 
> Uli

Thanks for pointing out everything I did wrong without giving me any 
help.  Much appreciated.
        - the error message is in the subject line
        - sorry that the indentation was inconsistent
        - I provided an example.  It wasn't minimal enough for you?
        - Thanks for pointing out the empty container problem, that at least 
          was a useful comment.

Let me try again, this time with a sample which is not my code:

Code:
  friend inline ostream& operator<<(ostream& os, const Range& range)
    {
      os << "Range("; // << range.first() << "," << range.last() << ","
      //           << range.stride() << ")";

        return os;
    }

Error:
/usr/include/blitz/range.h:173: error: ambiguous overload for 
$-1òøoperator<<òù in òøos << "Range("òù
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:241:
 note: candidates are: std::basic_ostream<_CharT, _Traits>& 
std::basic_ostream<_CharT, _Traits>::operator<<(long int) [with _CharT = char, 
_Traits = std::char_traits<char>] <near match>
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:264:
 note:                 std::basic_ostream<_CharT, _Traits>& 
std::basic_ostream<_CharT, _Traits>::operator<<(long unsigned int) [with _CharT 
= char, _Traits = std::char_traits<char>] <near match>
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:102:
 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-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:125:
 note:                 std::basic_ostream<_CharT, _Traits>& 
std::basic_ostream<_CharT, _Traits>::operator<<(short int) [with _CharT = char, 
_Traits = std::char_traits<char>] <near match>
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:157:
 note:                 std::basic_ostream<_CharT, _Traits>& 
std::basic_ostream<_CharT, _Traits>::operator<<(short unsigned int) [with 
_CharT = char, _Traits = std::char_traits<char>] <near match>
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:183:
 note:                 std::basic_ostream<_CharT, _Traits>& 
std::basic_ostream<_CharT, _Traits>::operator<<(int) [with _CharT = char, 
_Traits = std::char_traits<char>] <near match>
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:215:
 note:                 std::basic_ostream<_CharT, _Traits>& 
std::basic_ostream<_CharT, _Traits>::operator<<(unsigned int) [with _CharT = 
char, _Traits = std::char_traits<char>] <near match>
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:288:
 note:                 std::basic_ostream<_CharT, _Traits>& 
std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = 
char, _Traits = std::char_traits<char>] <near match>
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:311:
 note:                 std::basic_ostream<_CharT, _Traits>& 
std::basic_ostream<_CharT, _Traits>::operator<<(long long unsigned int) [with 
_CharT = char, _Traits = std::char_traits<char>] <near match>
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:407:
 note:                 std::basic_ostream<_CharT, _Traits>& 
std::basic_ostream<_CharT, _Traits>::operator<<(const void*) [with _CharT = 
char, _Traits = std::char_traits<char>]
../2dFDTD/utilities.hpp:53: note:                 std::ostream& 
operator<<(std::ostream&, const C&) [with C = char [7]]
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:735:
 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-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:690:
 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-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:657:
note:                 std::basic_ostream<_CharT, _Traits>&
std::operator<<(std::basic_ostream<_CharT, _Traits>&, const _CharT*) [with
_CharT = char, _Traits = std::char_traits<char>]
/usr/include/blitz/range.h:173: error: ambiguous overload for
$-1òøoperator<<òù in òøos << "Range("òù
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:241:
note: candidates are: std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>::operator<<(long int) [with _CharT =
char, _Traits = std::char_traits<char>] <near match>
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:264:
note:                 std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>::operator<<(long unsigned int) [with
_CharT = char, _Traits = std::char_traits<char>] <near match>
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:102:
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-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:125:
note:                 std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>::operator<<(short int) [with _CharT =
char, _Traits = std::char_traits<char>] <near match>
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:157:
note:                 std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>::operator<<(short unsigned int) [with
_CharT = char, _Traits = std::char_traits<char>] <near match>
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:183:
note:                 std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>::operator<<(int) [with _CharT = char,
_Traits = std::char_traits<char>] <near match>
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:215:
note:                 std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>::operator<<(unsigned int) [with _CharT
= char, _Traits = std::char_traits<char>] <near match>
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:288:
note:                 std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with
_CharT = char, _Traits = std::char_traits<char>] <near match>
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:311:
note:                 std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>::operator<<(long long unsigned int)
[with _CharT = char, _Traits = std::char_traits<char>] <near match>
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:407:
note:                 std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT, _Traits>::operator<<(const void*) [with _CharT
= char, _Traits = std::char_traits<char>] ../2dFDTD/utilities.hpp:53:
note:                 std::ostream& operator<<(std::ostream&, const C&)
[with C = char [7]]
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:735:
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-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:690:
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-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/ostream.tcc:657:
note:                 std::basic_ostream<_CharT, _Traits>&
std::operator<<(std::basic_ostream<_CharT, _Traits>&, const _CharT*) [with
_CharT = char, _Traits = std::char_traits<char>]

Does anyone know what is going on here?


reply via email to

[Prev in Thread] Current Thread [Next in Thread]