Skip to content

Commit 9d8f088

Browse files
committed
[implimits] reorder Annex B by clause number
Reorder the entries in the list of implementation limits according to their clause number. This ordering neatly groups related items such as all the preprocessor limits, and segragates library from core language limits. It loses some of the local organization of the original ordering, such as all parameter and argument list lengths being colocated.
1 parent 3680e10 commit 9d8f088

File tree

1 file changed

+66
-57
lines changed

1 file changed

+66
-57
lines changed

source/limits.tex

Lines changed: 66 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,7 @@
1919
However, these quantities are only guidelines and do not determine compliance.
2020
\begin{itemize}
2121
\item%
22-
Nesting levels of compound statements\iref{stmt.block},
23-
iteration control structures\iref{stmt.iter},
24-
and selection control structures\iref{stmt.select} [256].
25-
\item%
26-
Nesting levels of conditional inclusion\iref{cpp.cond} [256].
27-
\item%
28-
Pointer\iref{dcl.ptr},
29-
pointer-to-member\iref{dcl.mptr},
30-
array\iref{dcl.array}, and
31-
function\iref{dcl.fct}
32-
declarators (in any combination)
33-
modifying a type in a declaration [256].
34-
\item%
35-
Nesting levels of parenthesized expressions\iref{expr.prim.paren} within a full-expression [256].
22+
Characters in one logical source line\iref{lex.phases} [65\,536].
3623
\item%
3724
Number of
3825
characters in an internal identifier\iref{lex.name}
@@ -41,95 +28,117 @@
4128
Number of
4229
characters in an external identifier\iref{lex.name,basic.link} [1\,024].
4330
\item%
44-
External identifiers\iref{basic.link} in one translation unit [65\,536].
31+
Characters in a \grammarterm{string-literal}\iref{lex.string}
32+
(after concatenation\iref{lex.phases}) [65\,536].
33+
4534
\item%
4635
Identifiers with block scope declared in one block\iref{basic.scope.block} [1\,024].
4736
\item%
48-
Structured bindings\iref{dcl.struct.bind} introduced in one declaration [256].
49-
\item%
50-
Macro identifiers\iref{cpp.replace} simultaneously defined in one
51-
translation
52-
unit [65\,536].
53-
\item%
54-
Parameters in one function definition\iref{dcl.fct.def.general} [256].
37+
External identifiers\iref{basic.link} in one translation unit [65\,536].
5538
\item%
56-
Arguments in one function call\iref{expr.call} [256].
39+
Size of an object\iref{intro.object} [262\,144].
40+
5741
\item%
58-
Parameters in one macro definition\iref{cpp.replace} [256].
42+
Nesting levels of parenthesized expressions\iref{expr.prim.paren} within a full-expression [256].
5943
\item%
60-
Arguments in one macro invocation\iref{cpp.replace} [256].
44+
Scope qualifications of one identifier\iref{expr.prim.id.qual} [256].
6145
\item%
62-
Characters in one logical source line\iref{lex.phases} [65\,536].
46+
Lambda-captures in one \grammarterm{lambda-expression}\iref{expr.prim.lambda.capture} [256].
6347
\item%
64-
Characters in a \grammarterm{string-literal}\iref{lex.string}
65-
(after concatenation\iref{lex.phases}) [65\,536].
48+
Arguments in one function call\iref{expr.call} [256].
6649
\item%
67-
Size of an object\iref{intro.object} [262\,144].
50+
Full-expressions evaluated within a core constant expression\iref{expr.const} [1\,048\,576].
51+
6852
\item%
69-
Nesting levels for
70-
\tcode{\#include}
71-
files\iref{cpp.include} [256].
53+
Nesting levels of compound statements\iref{stmt.block},
54+
iteration control structures\iref{stmt.iter},
55+
and selection control structures\iref{stmt.select} [256].
7256
\item%
7357
Case labels for a
7458
\keyword{switch}
7559
statement\iref{stmt.switch} (excluding those for any nested
7660
\keyword{switch}
7761
statements)
7862
[16\,384].
63+
7964
\item%
80-
Non-static data members (including inherited ones) in a single class\iref{class.mem} [16\,384].
65+
Recursive constexpr function invocations\iref{dcl.constexpr} [512].
8166
\item%
82-
Lambda-captures in one \grammarterm{lambda-expression}\iref{expr.prim.lambda.capture} [256].
67+
Pointer\iref{dcl.ptr},
68+
pointer-to-member\iref{dcl.mptr},
69+
array\iref{dcl.array}, and
70+
function\iref{dcl.fct}
71+
declarators (in any combination)
72+
modifying a type in a declaration [256].
73+
\item%
74+
\grammarterm{initializer-clause}{s} in one \grammarterm{braced-init-list}\iref{dcl.init} [16\,384].
75+
\item%
76+
Parameters in one function definition\iref{dcl.fct.def.general} [256].
77+
\item%
78+
Structured bindings\iref{dcl.struct.bind} introduced in one declaration [256].
8379
\item%
8480
Enumeration constants in a single enumeration\iref{dcl.enum} [4\,096].
8581
\item%
82+
Nested \grammarterm{linkage-specification}s\iref{dcl.link} [1\,024].
83+
84+
\item%
85+
Class members declared in a single \grammarterm{member-specification}
86+
(including member functions)\iref{class.mem} [4\,096].
87+
\item%
88+
Non-static data members (including inherited ones) in a single class\iref{class.mem} [16\,384].
89+
\item%
90+
Static data members of a class\iref{class.static.data} [1\,024].
91+
\item%
8692
Levels of nested class definitions\iref{class.nest}
8793
in a single
8894
\grammarterm{member-specification}
8995
[256].
9096
\item%
91-
Functions registered by
92-
\tcode{atexit()}\iref{support.start.term} [32].
93-
\item%
94-
Functions registered by
95-
\tcode{at_quick_exit()}\iref{support.start.term} [32].
97+
Direct base classes for a single class\iref{class.derived} [1\,024].
9698
\item%
9799
Direct and indirect base classes\iref{class.derived} [16\,384].
98100
\item%
99-
Direct base classes for a single class\iref{class.derived} [1\,024].
100-
\item%
101-
Class members declared in a single \grammarterm{member-specification}
102-
(including member functions)\iref{class.mem} [4\,096].
101+
Direct and indirect virtual bases of a class\iref{class.mi} [1\,024].
103102
\item%
104103
Final overriding virtual functions in a class,
105104
accessible or not\iref{class.virtual} [16\,384].
106105
\item%
107-
Direct and indirect virtual bases of a class\iref{class.mi} [1\,024].
108-
\item%
109-
Static data members of a class\iref{class.static.data} [1\,024].
106+
Access control declarations in a class\iref{class.access.spec} [4\,096].
110107
\item%
111108
Friend declarations in a class\iref{class.friend} [4\,096].
112109
\item%
113-
Access control declarations in a class\iref{class.access.spec} [4\,096].
114-
\item%
115110
Member initializers in a constructor definition\iref{class.base.init} [6\,144].
111+
116112
\item%
117-
\grammarterm{initializer-clause}{s} in one \grammarterm{braced-init-list}\iref{dcl.init} [16\,384].
113+
Template parameters in a template declaration\iref{temp.param} [1\,024].
118114
\item%
119-
Scope qualifications of one identifier\iref{expr.prim.id.qual} [256].
115+
Recursively nested template instantiations\iref{temp.inst}, including substitution
116+
during template argument deduction\iref{temp.deduct} [1\,024].
117+
120118
\item%
121-
Nested \grammarterm{linkage-specification}s\iref{dcl.link} [1\,024].
119+
Handlers per try block\iref{except.handle} [256].
120+
122121
\item%
123-
Recursive constexpr function invocations\iref{dcl.constexpr} [512].
122+
Nesting levels of conditional inclusion\iref{cpp.cond} [256].
124123
\item%
125-
Full-expressions evaluated within a core constant expression\iref{expr.const} [1\,048\,576].
124+
Nesting levels for
125+
\tcode{\#include}
126+
files\iref{cpp.include} [256].
126127
\item%
127-
Template parameters in a template declaration\iref{temp.param} [1\,024].
128+
Parameters in one macro definition\iref{cpp.replace} [256].
128129
\item%
129-
Recursively nested template instantiations\iref{temp.inst}, including substitution
130-
during template argument deduction\iref{temp.deduct} [1\,024].
130+
Arguments in one macro invocation\iref{cpp.replace} [256].
131131
\item%
132-
Handlers per try block\iref{except.handle} [256].
132+
Macro identifiers\iref{cpp.replace} simultaneously defined in one
133+
translation
134+
unit [65\,536].
135+
136+
\item%
137+
Functions registered by
138+
\tcode{atexit()}\iref{support.start.term} [32].
139+
\item%
140+
Functions registered by
141+
\tcode{at_quick_exit()}\iref{support.start.term} [32].
133142
\item%
134143
Number of placeholders\iref{func.bind.place} [10].
135144
\item%

0 commit comments

Comments
 (0)