[comp.lang.c++] Bug in CC 2.0?

sdm@cs.brown.edu (Scott Meyers) (12/01/89)

Consider the following program:

    #include <iostream.h>


    enum Node_Type { stuff };
    ostream& operator<<(ostream& s, const Node_Type& n);

    class Node { public:  int x; };

    void foo(Node& n) { cout << n.x; }

When I try to compile it on a Sun Sparcstation with AT&T's 2.0 compiler,
this is what I get:

    CC -c  -g +p bug.C -o bug.o
    CC  +p bug.C:
    "bug.C", line 9: error:  int  assigned to  enum Node_Type
    1 error

The error is caused by the "cout << n.x" statement.  Since n.x is an int,
operator<< for int should be called, so I can't imagine why CC is trying
to convert it to a Node_Type.  If I comment out my definition of 
operator<< for Node_Type, everything is fine.  

Is this a bug in CC, or have I done something wrong?

Scott
sdm@cs.brown.edu