Go forward to compiling standard libraries.
Go backward to namespaces.
Go up to User Problems.

What are the differences between g++ and the ARM specification of C++?
======================================================================

   As of version 2.7.0, g++ has exception support on most but not all
platforms (no support on MIPS-based platforms yet), but it doesn't work
right if optimizaton is enabled, which means the exception
implementation is still not really ready for production use.

   Some features that the ANSI/ISO standardization committee has voted
in that don't appear in the ARM are supported, notably the `mutable'
keyword, in version 2.5.x.  2.6.x adds support for the built-in boolean
type `bool', with constants `true' and `false'.  The beginnings of
run-time type identification are present, so there are more reserved
words: `typeid', `static_cast', `reinterpret_cast', `const_cast', and
`dynamic_cast'.

   As with any beta-test compiler, there are bugs.  You can help improve
the compiler by submitting detailed bug reports.

   One of the weakest areas of g++ other than templates is the
resolution of overloaded functions and operators in complex cases.  The
usual symptom is that in a case where the ARM says that it is ambiguous
which function should be chosen, g++ chooses one (often the first one
declared).  This is usually not a problem when porting C++ code from
other compilers to g++, but shows up as errors when code developed under
g++ is ported to other compilers.  (I believe this is no longer a
significant problem in 2.7.0).

   [A full bug list would be very long indeed, so I won't put one here.
I may add a list of frequently-reported bugs and "non-bugs" like the
static class members issue mentioned above].