[comp.lang.c++] enum bug in Turbo C++ and Zortech. Can't overload << operator for enums

charlie@genrad.com (Charlie D. Havener) (07/03/90)

// enum.cxx - experiment with overloading << for enums
// Charlie Havener - GenRad Inc. charlie@genrad.com
// Both Zortech 2.06, 2.1 and Borland Turbo C++ Get this wrong!

#include <stream.h>   // must be iostream.h for Borland Turbo C++

enum color {SKIPZERO,RED,BLUE,GREEN};
ostream& operator<<(ostream& os,color tint);

main()
    {
    int k = 99;
    cout << (color)BLUE << "\n";  // fails because cout is ostream_withassign
				// supposedly fixed in AT&T 2.1
    // next line will actually ouput text strings for RED etc
    // except Zortech complains at compile time and Borland
    // fails at run time, it merely puts out integers
    cout << k << " " << RED << " " << BLUE << RED << GREEN << "\n";
    cout << GREEN << "\n"; // fails because cout is ostream_withassign
    }


ostream& operator<<(ostream& os,color tint)
    {
    switch ( tint )
	{
	case RED:
	    cout << "RED";
	    break;
	case BLUE:
	    cout << "BLUE";
	    break;
	case GREEN:
	    cout << "GREEN";
	    break;
	case SKIPZERO:
	default:
	    cout << "color?";
	}
    return os;
    }

/*  sample output from Sun C++ ( AT&T cfront 2.0 )
2
99 RED BLUEREDGREEN
3
*/