%!TEX root = std.tex \infannex{implimits}{Implementation quantities} \pnum 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. \begin{itemize} \item% Nesting levels of compound statements\iref{stmt.block}, iteration control structures\iref{stmt.iter}, and selection control structures\iref{stmt.select} [256]. \item% Nesting levels of conditional inclusion\iref{cpp.cond} [256]. \item% Pointer\iref{dcl.ptr}, pointer-to-member\iref{dcl.mptr}, array\iref{dcl.array}, and function\iref{dcl.fct} declarators (in any combination) modifying a type in a declaration [256]. \item% Nesting levels of parenthesized expressions\iref{expr.prim.paren} within a full-expression [256]. \item% Number of characters in an internal identifier\iref{lex.name} or macro name\iref{cpp.replace} [1\,024]. \item% Number of characters in an external identifier\iref{lex.name,basic.link} [1\,024]. \item% External identifiers\iref{basic.link} in one translation unit [65\,536]. \item% Identifiers with block scope declared in one block\iref{basic.scope.block} [1\,024]. \item% Structured bindings\iref{dcl.struct.bind} introduced in one declaration [256]. \item% Macro identifiers\iref{cpp.replace} simultaneously defined in one translation unit [65\,536]. \item% Parameters in one function definition\iref{dcl.fct.def.general} [256]. \item% Arguments in one function call\iref{expr.call} [256]. \item% Parameters in one macro definition\iref{cpp.replace} [256]. \item% Arguments in one macro invocation\iref{cpp.replace} [256]. \item% Characters in one logical source line\iref{lex.phases} [65\,536]. \item% Characters in a \grammarterm{string-literal}\iref{lex.string} (after concatenation\iref{lex.phases}) [65\,536]. \item% Size of an object\iref{intro.object} [262\,144]. \item% Nesting levels for \tcode{\#include} files\iref{cpp.include} [256]. \item% Case labels for a \keyword{switch} statement\iref{stmt.switch} (excluding those for any nested \keyword{switch} statements) [16\,384]. \item% Non-static data members (including inherited ones) in a single class\iref{class.mem} [16\,384]. \item% Lambda-captures in one \grammarterm{lambda-expression}\iref{expr.prim.lambda.capture} [256]. \item% Enumeration constants in a single enumeration\iref{dcl.enum} [4\,096]. \item% Levels of nested class definitions\iref{class.nest} in a single \grammarterm{member-specification} [256]. \item% Functions registered by \tcode{atexit()}\iref{support.start.term} [32]. \item% Functions registered by \tcode{at_quick_exit()}\iref{support.start.term} [32]. \item% Direct and indirect base classes\iref{class.derived} [16\,384]. \item% Direct base classes for a single class\iref{class.derived} [1\,024]. \item% Class members declared in a single \grammarterm{member-specification} (including member functions)\iref{class.mem} [4\,096]. \item% Final overriding virtual functions in a class, accessible or not\iref{class.virtual} [16\,384]. \item% Direct and indirect virtual bases of a class\iref{class.mi} [1\,024]. \item% Static data members of a class\iref{class.static.data} [1\,024]. \item% Friend declarations in a class\iref{class.friend} [4\,096]. \item% Access control declarations in a class\iref{class.access.spec} [4\,096]. \item% Member initializers in a constructor definition\iref{class.base.init} [6\,144]. \item% \grammarterm{initializer-clause}{s} in one \grammarterm{braced-init-list}\iref{dcl.init} [16\,384]. \item% Scope qualifications of one identifier\iref{expr.prim.id.qual} [256]. \item% Nested \grammarterm{linkage-specification}s\iref{dcl.link} [1\,024]. \item% Recursive constexpr function invocations\iref{dcl.constexpr} [512]. \item% Full-expressions evaluated within a core constant expression\iref{expr.const.core} [1\,048\,576]. \item% Template parameters in a template declaration\iref{temp.param} [1\,024]. \item% Recursively nested template instantiations\iref{temp.inst}, including substitution during template argument deduction\iref{temp.deduct} [1\,024]. \item% Handlers per try block\iref{except.handle} [256]. \item% Number of placeholders\iref{func.bind.place} [10]. \item% Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. \end{itemize}