aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/NEWS
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cp/NEWS')
-rw-r--r--gcc/cp/NEWS33
1 files changed, 32 insertions, 1 deletions
diff --git a/gcc/cp/NEWS b/gcc/cp/NEWS
index 869ba057b2d..97d4cd83f51 100644
--- a/gcc/cp/NEWS
+++ b/gcc/cp/NEWS
@@ -1,9 +1,37 @@
+*** Changes in GCC 3.2.2:
+
+* 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 {
@@ -42,7 +70,10 @@
* 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.
+ 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