Implementation quantities
The IAR implementation of C++ is, like all implementations, limited in the size of the applications it can successfully process.
These limitations apply:
C++ feature | Limitation |
|---|---|
Nesting levels of compound statements, iteration control structures, and selection control structures. | Limited only by memory. |
Nesting levels of conditional inclusion. | Limited only by memory. |
Pointer, array, and function declarators (in any combination) modifying a class, arithmetic, or incomplete type in a declaration. | Limited only by memory. |
Nesting levels of parenthesized expressions within a full-expression. | Limited only by memory. |
Number of characters in an internal identifier or macro name. | Limited only by memory. |
Number of characters in an external identifier. | Limited only by memory. |
External identifiers in one translation unit. | Limited only by memory. |
Identifiers with block scope declared in a block. | Limited only by memory. |
Macro identifiers simultaneously defined in one translation unit. | Limited only by memory. |
Parameters in one function definition. | Limited only by memory. |
Arguments in one function call. | Limited only by memory. |
Parameters in one macro definition. | Limited only by memory. |
Arguments in one macro invocation. | Limited only by memory. |
Characters in one logical source line. | Limited only by memory. |
Characters in a string literal (after concatenation). | Limited only by memory. |
Size of an object. | Limited only by memory. |
Nesting levels for | Limited only by memory. |
Case labels for a switch statement (excluding those for any nested switch statements). | Limited only by memory. |
Data members in a single class. | Limited only by memory. |
Enumeration constants in a single enumeration. | Limited only by memory. |
Levels of nested class definitions in a single member-specification. | Limited only by memory. |
Functions registered by | Limited by heap memory in the built application. |
Functions registered by | Limited by heap memory in the built application. |
Direct and indirect base classes. | Limited only by memory. |
Direct base classes for a single class. | Limited only by memory. |
Members declared in a single class. | Limited only by memory. |
Final overriding virtual functions in a class, accessible or not. | Limited only by memory. |
Direct and indirect virtual bases of a class. | Limited only by memory. |
Static members of a class. | Limited only by memory. |
Friend declarations in a class. | Limited only by memory. |
Access control declarations in a class. | Limited only by memory. |
Member initializers in a constructor definition. | Limited only by memory. |
Scope qualifiers of one identifier. | Limited only by memory. |
Nested external specifications. | Limited only by memory. |
Recursive | 512. This limit can be changed by using the compiler option ‑‑ |
Full-expressions evaluated within a core constant expression. | Limited only by memory. |
Template arguments in a template declaration. | Limited only by memory. |
Recursively nested template instantiations, including substitution during template argument deduction (14.8.2). | 64 for a specific template. This limit can be changed by using the compiler option |
Handlers per try block. | Limited only by memory. |
Throw specifications on a single function declaration. | Limited only by memory. |
Number of placeholders (20.9.9.1.4). | 20 placeholders from |