Describes implementation-defined aspects of the Arm® C++ compiler and C++ library relating to expressions, as required by the ISO C++ Standard.
- Passing an argument of class type in a function call through ellipsis (5.2.2).
- For ellipsis arguments, passing an argument of class type having a non-trivial copy constructor, a non-trivial move constructor, or a non-trivial destructor, with no corresponding parameter, results in an abort at run time. A diagnostic is reported for this case.
- Result type of
- The type of a
typeidexpression is an expression with dynamic type
- Incrementing a bit-field that cannot represent the incremented value (5.2.6).
- The incremented value is truncated to the number of bits in the bit-field. The bit-field is updated with the bits of the truncated value.
- Conversions between pointers and integers (5.2.10).
Converting a pointer to an integer type with a smaller bit width than the pointer, truncates the pointer to the number of bits of the destination type. Converting a pointer to an integer type with a greater bit width than the pointer, zero-extends the pointer. Otherwise, the bits of the representation are unchanged.
Converting an unsigned integer to a pointer type with a greater bit-width than the unsigned integer zero-extends the integer. Converting a signed integer to a pointer type with a greater bit-width than the signed integer sign-extends the integer. Otherwise, the bits of the representation are unchanged.
- Conversions from function pointers to object pointers (5.2.10).
- Such conversions are supported.
sizeofapplied to fundamental types other than
signed char, and
long(AArch32 state only)
long(AArch64 state only)
long double(AArch32 state only)
long long(AArch64 state only)
- Support for over-aligned types in
- Over-aligned types are not supported in
newexpressions. The pointer for the allocated type will not fulfill the extended alignment.
- Type of
- The type of
signed intfor AArch32 state and
signed longfor AArch64 state.
- Type of
- The type of
unsigned intfor AArch32 state and
unsigned longfor AArch64 state.
- Result of right shift of negative value (5.8).
- In a bitwise right shift operation of the form
E1 >> E2, if
E1is of signed type and has a negative value, the value of the result is the integral part of the quotient of
E1 / (2 ** E2), except when
- Assignment of a value to a bit-field that the bit-field cannot represent (5.18).
- When assigning a value to a bit-field that the bit-field cannot represent, the value is truncated to the number of bits of the bit-field. A diagnostic is reported in some cases.