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].