* G++ no longer allows in-class initializations of static data members
that do not have arithmetic or enumeration type. For example:
* G++ no longer allows in-class initializations of static data members
that do not have arithmetic or enumeration type. For example:
pointer to cv-qualified member function types.
* The C++ ABI has been changed to correctly handle this code:
pointer to cv-qualified member function types.
* The C++ ABI has been changed to correctly handle this code:
The amount of storage allocated for the array will be greater than
it was in 3.0, in order to store the number of elements in the
array, so that the correct size can be passed to `operator delete[]'
The amount of storage allocated for the array will be greater than
it was in 3.0, in order to store the number of elements in the
array, so that the correct size can be passed to `operator delete[]'
`operator delete[]' was unpredictable.
This change will only affect code that declares a two-argument
`operator delete[]' with a second parameter of type `size_t'
`operator delete[]' was unpredictable.
This change will only affect code that declares a two-argument
`operator delete[]' with a second parameter of type `size_t'
void operator delete[] (void *, size_t);
void operator delete[] (void *);
};
void operator delete[] (void *, size_t);
void operator delete[] (void *);
};
are those whose types involve non-type template arguments whose
mangled representations require more than one digit.
are those whose types involve non-type template arguments whose
mangled representations require more than one digit.
was used in the very early days of C++, before users were allowed
to overload `operator new'; it is no longer allowed by the C++
standard.
was used in the very early days of C++, before users were allowed
to overload `operator new'; it is no longer allowed by the C++
standard.
* G++ previously allowed `sizeof (X::Y)' where Y was a non-static
member of X, even if the `sizeof' expression occurred outside
* G++ previously allowed `sizeof (X::Y)' where Y was a non-static
member of X, even if the `sizeof' expression occurred outside
int f () return r { r = 3; }
has been deprecated, and will be removed in a future version of G++.
int f () return r { r = 3; }
has been deprecated, and will be removed in a future version of G++.
to use namespace std, however, and the old std-faking code is still on by
default. To turn it off, you can use -fhonor-std.
to use namespace std, however, and the old std-faking code is still on by
default. To turn it off, you can use -fhonor-std.
but not all, the compiler will tell you where you need to add
'typename'. For more information, see
but not all, the compiler will tell you where you need to add
'typename'. For more information, see
including friend declarations, do not refer to template instantiations.
You can restore the old behavior with -fguiding-decls until you fix
your code.
including friend declarations, do not refer to template instantiations.
You can restore the old behavior with -fguiding-decls until you fix
your code.
guidelines in Scott Meyers' _Effective C++_ books.
+ -Woverloaded-virtual now warns if a virtual function in a base
guidelines in Scott Meyers' _Effective C++_ books.
+ -Woverloaded-virtual now warns if a virtual function in a base
signatures are overridden) as it did before.
+ -Wall no longer implies -W. The new warning flag, -Wsign-compare,
signatures are overridden) as it did before.
+ -Wall no longer implies -W. The new warning flag, -Wsign-compare,
- included in -Wall, warns about dangerous comparisons of signed and
- unsigned values. Only the flag is new; it was previously part of
- -W.
+ included in -Wall, warns about dangerous comparisons of signed and
+ unsigned values. Only the flag is new; it was previously part of
+ -W.
* __FUNCTION__ and __PRETTY_FUNCTION__ are now treated as variables by the
parser; previously they were treated as string constants. So code like
* __FUNCTION__ and __PRETTY_FUNCTION__ are now treated as variables by the
parser; previously they were treated as string constants. So code like
`printf ("%s: foo", __FUNCTION__)'. This is necessary for templates.
* local static variables in extern inline functions will be shared between
translation units.
`printf ("%s: foo", __FUNCTION__)'. This is necessary for templates.
* local static variables in extern inline functions will be shared between
translation units.
Linux with glibc 2.x (also called libc 6.x).
* bool is now always the same size as another built-in type. Previously,
Linux with glibc 2.x (also called libc 6.x).
* bool is now always the same size as another built-in type. Previously,
* Joe Buck <jbuck@synopsys.com>, the maintainer of the g++ FAQ.
* Brendan Kehoe <brendan@cygnus.com>, who coordinates testing of g++.
* Jason Merrill <jason@cygnus.com>, the g++ maintainer.
* Joe Buck <jbuck@synopsys.com>, the maintainer of the g++ FAQ.
* Brendan Kehoe <brendan@cygnus.com>, who coordinates testing of g++.
* Jason Merrill <jason@cygnus.com>, the g++ maintainer.
templates and explicit qualification of function templates.
* Mike Stump <mrs@wrs.com>, the previous g++ maintainer, who did most of
the exception handling work.
templates and explicit qualification of function templates.
* Mike Stump <mrs@wrs.com>, the previous g++ maintainer, who did most of
the exception handling work.