The following stripped-down code fails to compile in g++3.4.5 (compiles fine
with other compilers).
// CODE SNIPPET.
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
namespace MyNameSpace {
struct Point
{
double x;
double y;
double z;
};
} // namespace
std::ostream&
operator<< (std::ostream& os, const MyNameSpace::Point& src)
{
return os;
}
int
main (void)
{
std::vector<MyNameSpace::Point> polygons;
copy (polygons.begin (), polygons.end (),
std::ostream_iterator<MyNameSpace::Point> (std::cout, " ")); // ERROR
return 0;
}
and g++ generates the following error message:
error: no match for 'operator<<' in
'*((std::ostream_iterator<MyNameSpace::Point, char, std::char_traits<char>
>*)this)->std::ostream_iterator<MyNameSpace::Point, char,
std::char_traits<char> >::_M_stream << __value'
Note: the code compiles if I removed the namespace.
--
Summary: no match for 'operator<<'
Product: gcc
Version: 3.4.5
Status: UNCONFIRMED
Severity: major
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tony dot luu at baesystems dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26037