diff --git a/source/limits.tex b/source/limits.tex index 60c9dc3b69..29f9507425 100644 --- a/source/limits.tex +++ b/source/limits.tex @@ -19,56 +19,35 @@ However, these quantities are only guidelines and do not determine compliance. \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]. +Characters in one logical source line\iref{lex.phases} [65\,536]. \item% -Number of -characters in an internal identifier\iref{lex.name} -or macro name\iref{cpp.replace} [1\,024]. +Number of characters in an internal identifier\iref{lex.name} [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]. +Characters in a \grammarterm{string-literal}\iref{lex.string} +(after concatenation\iref{lex.phases}) [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]. +External identifiers\iref{basic.link} in one translation unit [65\,536]. \item% -Parameters in one function definition\iref{dcl.fct.def.general} [256]. +Size of an object\iref{intro.object} [262\,144]. \item% -Arguments in one function call\iref{expr.call} [256]. +Nesting levels of parenthesized expressions\iref{expr.prim.paren} within a full-expression [256]. \item% -Parameters in one macro definition\iref{cpp.replace} [256]. +Scope qualifications of one identifier\iref{expr.prim.id.qual} [256]. \item% -Arguments in one macro invocation\iref{cpp.replace} [256]. +Lambda-captures in one \grammarterm{lambda-expression}\iref{expr.prim.lambda.capture} [256]. \item% -Characters in one logical source line\iref{lex.phases} [65\,536]. +Arguments in one function call\iref{expr.call} [256]. \item% -Characters in a \grammarterm{string-literal}\iref{lex.string} -(after concatenation\iref{lex.phases}) [65\,536]. +Full-expressions evaluated within a core constant expression\iref{expr.const} [1\,048\,576]. \item% -Size of an object\iref{intro.object} [262\,144]. +Nesting levels of compound statements\iref{stmt.block} [256]. \item% -Nesting levels for -\tcode{\#include} -files\iref{cpp.include} [256]. +Nesting levels of selection control structures\iref{stmt.select} [256]. \item% Case labels for a \keyword{switch} @@ -77,52 +56,53 @@ statements) [16\,384]. \item% -Non-static data members (including inherited ones) in a single class\iref{class.mem} [16\,384]. +Nesting levels of iteration control structures\iref{stmt.iter} [256]. \item% -Lambda-captures in one \grammarterm{lambda-expression}\iref{expr.prim.lambda.capture} [256]. +Recursive constexpr function invocations\iref{dcl.constexpr} [512]. \item% -Enumeration constants in a single enumeration\iref{dcl.enum} [4\,096]. +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% -Levels of nested class definitions\iref{class.nest} -in a single -\grammarterm{member-specification} -[256]. +\grammarterm{initializer-clause}{s} in one \grammarterm{braced-init-list}\iref{dcl.init} [16\,384]. \item% -Functions registered by -\tcode{atexit()}\iref{support.start.term} [32]. +Parameters in one function definition\iref{dcl.fct.def.general} [256]. \item% -Functions registered by -\tcode{at_quick_exit()}\iref{support.start.term} [32]. +Structured bindings\iref{dcl.struct.bind} introduced in one declaration [256]. \item% -Direct and indirect base classes\iref{class.derived} [16\,384]. +Enumeration constants in a single enumeration\iref{dcl.enum} [4\,096]. \item% -Direct base classes for a single class\iref{class.derived} [1\,024]. +Nested \grammarterm{linkage-specification}s\iref{dcl.link} [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]. +Non-static data members (including inherited ones) in a single class\iref{class.mem} [16\,384]. \item% Static data members of a class\iref{class.static.data} [1\,024]. \item% -Friend declarations in a class\iref{class.friend} [4\,096]. +Levels of nested class definitions\iref{class.nest} +in a single +\grammarterm{member-specification} +[256]. \item% -Access control declarations in a class\iref{class.access.spec} [4\,096]. +Direct base classes for a single class\iref{class.derived} [1\,024]. \item% -Member initializers in a constructor definition\iref{class.base.init} [6\,144]. +Direct and indirect base classes\iref{class.derived} [16\,384]. \item% -\grammarterm{initializer-clause}{s} in one \grammarterm{braced-init-list}\iref{dcl.init} [16\,384]. +Direct and indirect virtual bases of a class\iref{class.mi} [1\,024]. \item% -Scope qualifications of one identifier\iref{expr.prim.id.qual} [256]. +Final overriding virtual functions in a class, +accessible or not\iref{class.virtual} [16\,384]. \item% -Nested \grammarterm{linkage-specification}s\iref{dcl.link} [1\,024]. +Access control declarations in a class\iref{class.access.spec} [4\,096]. \item% -Recursive constexpr function invocations\iref{dcl.constexpr} [512]. +Friend declarations in a class\iref{class.friend} [4\,096]. \item% -Full-expressions evaluated within a core constant expression\iref{expr.const} [1\,048\,576]. +Member initializers in a constructor definition\iref{class.base.init} [6\,144]. \item% Template parameters in a template declaration\iref{temp.param} [1\,024]. \item% @@ -131,6 +111,27 @@ \item% Handlers per try block\iref{except.handle} [256]. \item% +Nesting levels of conditional inclusion\iref{cpp.cond} [256]. +\item% +Nesting levels for +\tcode{\#include} +files\iref{cpp.include} [256]. +\item% +Parameters in one macro definition\iref{cpp.replace} [256]. +\item% +Arguments in one macro invocation\iref{cpp.replace} [256]. +\item% +Number of characters in a macro name\iref{cpp.replace} [1\,024]. +\item% +Macro identifiers\iref{cpp.replace} simultaneously defined in one +translation unit [65\,536]. +\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% Number of placeholders\iref{func.bind.place} [10]. \item% Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256].