Compiler Bugs VISUAL C++ 5.0 1. Broken in several places. Not supported. Upgrade. VISUAL C++ 6.0 1. Incorrectly handles the scoping of variables declared in the for loop initialization expression. 2. When the entire std namespace is imported, it appears there is a bug declaring input and output functions as friends. This shows up in the Rational examples. To fix, either do not use friends, or import the std namespace in its entirety (import only ostream and istream), or use fully qualified names. Method #1: implement operator<< by calling a public print member function Method #2: using std::ostream; Method #3: std::ostream & operator<< ( std::ostream & out, const Object & x ) 3. getline seems to be broken when used with cin (it is one line behind). I have provided getline.cpp that seems to work better. 4. It does not occur in the code, but function templates occasionally do not get correctly expanded -- the compiler can get confused. It is best to place the functions in class templates if you can (You can make them static, but see the g++ bugs below!). 5. It is not a bug, however you cannot mix and . BORLAND 5.0 (there are several different releases; some or all have these bugs) 1. The push_back method for vector is inefficient because it expands by a fixed amount rather than doubling. 2. iostream stuff does not seem to be in the std namespace. Fixed in 5.3 (??) 3. Does not understand default template parameters, so many of the STL components require templates types that are normally optional. For instance, set requires that you supply less, as is done in the code. 4. getline does not seem to work in 5.2 and lower (different bug than Visual 6.0!). I have provided getline.cpp that seems to work better. g++ 2.8.1 and egs 1. Namespaces are not implemented. There is a hack so that using namespace std; is recognized by the compiler, but clearly the Standard Library is not really in a namespace. 2. Static methods of class templates are not supported. 3. Does not seem to know about istringstream. Instead, the older istrstream needs to be used.