HP aC++/HP ANSI C A.06.27 Release Notes

Improved support for GNU extensions
This release of aC++ supports a host of GNU compiler extensions. For more details about these
features, refer to the GNU documentation available at http://gcc.gnu.org/onlinedocs/gcc/.
Better support for type trait pseudo functions
Various type trait pseudo-functions are supported in this release of aC++ in the GNU compilation
mode such as __has_nothrow_assign, __has_nothrow_constructor, __has_nothrow_copy,
__has_trivial_assign, __has_trivial_constructor, __has_trivial_copy, __has_trivial_destructor,
__is_abstract, __is_class, __is_convertible_to, __is_empty, __is_enum, __is_pod, __is_polymorphic
and __is_union.
All the above type trait pseudo-functions are now supported in the GNU C++ compilation mode
(-Ag++).
Better support for attributes
Various attributes are supported in this release of aC++ in the GNU compilation mode, such as
vector_size, transparent_union, gnu_inline, deprecated, weakref and alloc_size.
Better support for templates
When compiling in GNU C++ mode, the following features are now accepted in this release of
aC++:
Floating-point operations in template arguments
template <int xi> struct foo {};
foo< ( 3.1 < 2.3) > d;
Abstract class parameters in templates
struct A { virtual void p() = 0; };
struct B:A { virtual void p() {} };
template<typename T> void f(void (*)(T t)){}
int main()
{
f<A>(0); // Now elicits a warning instead of an error.
}
Pure specifier ("= 0") in templates
template<typename T> struct S
{
void f() = 0; // An error is issued if the template is instantiated.
};
T& in template that can be deduced to match "this"
template <class T> void gg(T &r) { r = 0; }
struct A
{
void f()
{
gg(this); // T deduced as "A *const", assignment in gg gets error
}
};
10 What’s new in this version