Annex A of the ISO/IEC 14882:2003 C++ Standard lists compiler behaviors that are beyond the scope of the standard, but which must be documented for a compiler implementation. This annex also lists minimum guidelines for these behaviors, although a conforming compiler is not required to meet these minimums.
The CodeWarrior C++ compiler has these implementation quantities listed in Implementation Quantities for C/C++ Compiler (ISO/IEC 14882:2003 C++, §A) , based on the ISO/IEC 14882:2003 C++ Standard, Annex A.
| Behavior | Standard Minimum Guideline | CodeWarrior Limit |
|---|---|---|
| Nesting levels of compound statements, iteration control structures, and selection control structures | 256 | Unlimited |
| Nesting levels of conditional inclusion | 256 | 256 |
| Pointer, array, and function declarators (in any combination) modifying an arithmetic, structure, union, or incomplete type in a declaration | 256 | Unlimited |
| Nesting levels of parenthesized expressions within a full expression | 256 | Unlimited |
| Number of initial characters in an internal identifier or macro name | 1024 | Unlimited |
| Number of initial characters in an external identifier | 1024 | Unlimited |
| External identifiers in one translation unit | 65536 | Unlimited |
| Identifiers with block scope declared in one block | 1024 | Unlimited |
| Macro identifiers simultaneously defined in one translation unit | 65536 | Unlimited |
| Parameters in one function definition | 256 | Unlimited |
| Arguments in one function call | 256 | Unlimited |
| Parameters in one macro definition | 256 | 256 |
| Arguments in one macro invocation | 256 | 256 |
| Characters in one logical source line | 65536 | Unlimited |
| Characters in a character string literal or wide string literal (after concatenation) | 65536 | Unlimited |
| Size of an object | 262144 | 2 GB |
| Nesting levels for # include files | 256 | 256 |
| Case labels for a switch statement (excluding those for any nested switch statements) | 16384 | Unlimited |
| Data members in a single class, structure, or union | 16384 | Unlimited |
| Enumeration constants in a single enumeration | 4096 | Unlimited |
| Levels of nested class, structure, or union definitions in a single struct-declaration-list | 256 | Unlimited |
| Functions registered by atexit() | 32 | 64 |
| Direct and indirect base classes | 16384 | Unlimited |
| Direct base classes for a single class | 1024 | Unlimited |
| Members declared in a single class | 4096 | Unlimited |
| Final overriding virtual functions in a class, accessible or not | 16384 | Unlimited |
| Direct and indirect virtual bases of a class | 1024 | Unlimited |
| Static members of a class | 1024 | Unlimited |
| Friend declarations in a class | 4096 | Unlimited |
| Access control declarations in a class | 4096 | Unlimited |
| Member initializers in a constructor definition | 6144 | Unlimited |
| Scope qualifications of one identifier | 256 | Unlimited |
| Nested external specifications | 1024 | Unlimited |
| Template arguments in a template declaration | 1024 | Unlimited |
| Recursively nested template instantiations | 17 | 64 (adjustable upto 30000 using #pragma template_depth(<n>)) |
| Handlers per try block | 256 | Unlimited |
| Throw specifications on a single function declaration | 256 | Unlimited |