Technical data
Cray Standard C/C++ Reference Manual
• Explicit specification of function template arguments is supported.
• Unnamed template parameters are supported.
• The new lookup rules for member references of the form x.A::B and
p->A::B are supported.
• The notation :: template (and –>template, etc.) is supported.
• In a reference of the form f()->g(), with g a static member function, f() is
evaluated. Likewise for a similar reference to a static data member. The ARM
specifies that the left operand is not evaluated in such cases.
• enum types can contain values larger than can be contained in an int.
• Default arguments of function templates and member functions of class
templates are instantiated only when the default argument is used in a call.
• String literals and wide string literals have const type.
• Class name injection is implemented.
• Argument-dependent (Koenig) lookup of function names is implemented.
• Class and function names declared only in unqualified friend declarations are
not visible except for functions found by argument-dependent lookup.
• A void expression can be specified on a return statement in a void function.
B.1.2 Unsupported Features
The following features, which are defined in the ISO/IEC 14882:1998 standard but
are not in traditional C++ are not supported:
• reinterpret_cast does not allow casting a pointer to a member of one
class to a pointer to a member of another class if the classes are unrelated.
• Two-phase name binding in templates as described in the Working Paper,is
not implemented.
• Putting a try/catch around the initializers and body of a constructor is
not implemented.
• Template template parameters are not implemented.
• Universal character set escapes (e.g., \uabcd) are not implemented.
• The export keyword for templates is not implemented.
160 S–2179–36










