Technical data

Cray Standard C/C++ Dialects [B]
struct A { };
struct B : public A {
B& operator=(A&);
};
By default, as well as in cfront-compatibility mode, there will be no implicit
declaration of B::operator=(const B&), whereas in strict-ANSI
mode, B::operator=(A&) is not a copy assignment operator and
B::operator=(const B&) is implicitly declared.
Implicit type conversion between a pointer to an extern "C" function and
a pointer to an extern "C++" function is permitted. The following is an
example:
extern "C" void f(); // fs type has extern "C" linkage
void (*pf)() // pf points to an extern "C++" function
= &f; // error unless implicit conversion allowed
The ? operator, for which the second and third operands are string literals or
wide string literals, can be implicitly converted to one of the following:
char *
wchar_t *
In C++ string literals are const. There is a deprecated implicit conversion
that allows conversion of a string literal to char *, dropping the const. That
conversion, however, applies only to simple string literals. Allowing it for the
result of a ? operation is an extension:
char *p = x ? "abc" : "def";
B.4 Extensions Accepted in C or C++ Mode
The following extensions are accepted in C or C++ mode except when strict
standard conformance modes is enabled, in which case a warning or caution
message may be issued.
The special lint comments /*ARGSUSED*/, /*VARARGS*/ (with or without
a count of nonvarying arguments), and /*NOTREACHED*/ are recognized.
A translation unit (input file) can contain no declarations.
Comment text can appear at the ends of preprocessing directives.
Bit fields can have base types that are enum or integral types in addition to
int and unsigned int. This corresponds to A.6.5.8 in the ANSI Common
Extensions appendix.
S217936 163