Technical data
Cray Standard C/C++ Dialects [B]
• Definition of a nested class outside its enclosing class is allowed.
• mutable is accepted on nonstatic data member declarations.
• Namespaces are implemented, including using declarations and directives.
Access declarations are broadened to match the corresponding using
declarations.
• Explicit instantiation of templates is implemented.
• The typename keyword is recognized.
• explicit is accepted to declare nonconverting constructors.
• The scope of a variable declared in the for-init-statement of a for loop
is the scope of the loop (not the surrounding scope).
• Member templates are implemented.
• The new specialization syntax (using template <>) is implemented.
• Cv qualifiers are retained on rvalues (in particular, on function return
values).
• The distinction between trivial and nontrivial constructors has been
implemented, as has the distinction between process overlay directives
(PODs) and non-PODs with trivial constructors.
• The linkage specification is treated as part of the function type (affecting
function overloading and implicit conversions).
• A typedef name can be used in an explicit destructor call.
• Placement delete is supported.
• An array allocated via a placement new can be deallocated via delete.
• enum types are considered to be nonintegral types.
• Partial specification of class templates is implemented.
• Partial ordering of function templates is implemented.
• Function declarations that match a function template are regarded as
independent functions, not as “guiding declarations” that are instances of
the template.
• It is possible to overload operators using functions that take enum types
and no class types.
S–2179–36 159










