[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?