Annex B (informative) Implementation quantities [implimits] (original) (raw)
Implementations can exhibit limitations for various quantities; some possibilities are presented in the following list.
The bracketed number following each quantity is a potential minimum value for that quantity.
- Nesting levels of conditional inclusion ([cpp.cond]) [256].
- Nesting levels of parenthesized expressions ([expr.prim.paren]) within a full-expression [256].
- External identifiers ([basic.link]) in one translation unit [65 536].
- Macro identifiers ([cpp.replace]) simultaneously defined in one translation unit [65 536].
- Characters in one logical source line ([lex.phases]) [65 536].
- Case labels for aswitchstatement ([stmt.switch]) (excluding those for any nestedswitchstatements) [16 384].
- Non-static data members (including inherited ones) in a single class ([class.mem]) [16 384].
- Enumeration constants in a single enumeration ([dcl.enum]) [4 096].
- Final overriding virtual functions in a class, accessible or not ([class.virtual]) [16 384].
- Direct and indirect virtual bases of a class ([class.mi]) [1 024].
- Full-expressions evaluated within a core constant expression ([expr.const]) [1 048 576].
- Template parameters in a template declaration ([temp.param]) [1 024].
- Recursively nested template instantiations ([temp.inst]), including substitution during template argument deduction ([temp.deduct]) [1 024].