+*** Changes in GCC 3.4:
+
+* Changes in GCC 3.4 are described in 'gcc-3.4/changes.html'
+
+*** Changes in GCC 3.3:
+
+* The "new X = 3" extension has been removed; you must now use "new X(3)".
+
+* G++ no longer allows in-class initializations of static data members
+ that do not have arithmetic or enumeration type. For example:
+
+ struct S {
+ static const char* const p = "abc";
+ };
+
+ is no longer accepted.
+
+ Use the standards-conformant form:
+
+ struct S {
+ static const char* const p;
+ };
+
+ const char* const S::p = "abc";
+
+ instead.
+
+ (ISO C++ is even stricter; it does not allow in-class
+ initializations of floating-point types.)
+
*** Changes in GCC 3.1:
* -fhonor-std and -fno-honor-std have been removed. -fno-honor-std was
a workaround to allow std compliant code to work with the non-std
compliant libstdc++-v2. libstdc++-v3 is std compliant.
+* The C++ ABI has been fixed so that `void (A::*)() const' is mangled as
+ "M1AKFvvE", rather than "MK1AFvvE" as before. This change only affects
+ pointer to cv-qualified member function types.
+
* The C++ ABI has been changed to correctly handle this code:
struct A {
forms of `operator delete[]', and declared the two-argument form
before the one-argument form.
+* The C++ ABI has been changed so that when a parameter is passed by value,
+ any cleanup for that parameter is performed in the caller, as specified
+ by the ia64 C++ ABI, rather than the called function as before. As a
+ result, classes with a non-trivial destructor but a trivial copy
+ constructor will be passed and returned by invisible reference, rather
+ than by bitwise copy as before.
+
+* G++ now supports the "named return value optimization": for code like
+
+ A f () {
+ A a;
+ ...
+ return a;
+ }
+
+ G++ will allocate 'a' in the return value slot, so that the return
+ becomes a no-op. For this to work, all return statements in the function
+ must return the same variable.
+
*** Changes in GCC 3.0:
* Support for guiding declarations has been removed.