Skip to content

Commit 45e500c

Browse files
zygoloidtkoeppe
authored andcommitted
Fix minor deviations between Foreword and ISO/CS standard text. Simplify
list of main changes and remove some more minor items. Fixes ISO/CS 012 (C++20 DIS).
1 parent 9a8c6ae commit 45e500c

File tree

1 file changed

+16
-84
lines changed

1 file changed

+16
-84
lines changed

source/preface.tex

Lines changed: 16 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ \chapter{Foreword}
1212

1313
The procedures used to develop this document and those intended for its further
1414
maintenance are described in the ISO/IEC Directives, Part 1. In particular the
15-
different approval criteria needed for the different types of documents should
15+
different approval criteria needed for the different types of document should
1616
be noted. This document was drafted in accordance with the editorial rules of
1717
the ISO/IEC Directives, Part 2
1818
(see \href{http://www.iso.org/directives}{\tcode{www.iso.org/directives}}).
@@ -34,7 +34,7 @@ \chapter{Foreword}
3434
the meaning of ISO specific terms and expressions related
3535
to conformity assessment, as well as information about ISO's adherence
3636
to the World Trade Organization (WTO) principles
37-
in the Technical Barriers to Trade (TBT) see the following URL:
37+
in the Technical Barriers to Trade (TBT), see
3838
\href{http://www.iso.org/iso/foreword.html}{\tcode{www.iso.org/iso/foreword.html}}.
3939

4040
This document was prepared by
@@ -43,21 +43,21 @@ \chapter{Foreword}
4343

4444
This sixth edition cancels and replaces the fifth edition
4545
(ISO/IEC 14882:2017), which has been technically revised.
46-
It also incorporates the Technical Specifications
46+
47+
The main changes compared to the previous edition are as follows:
48+
49+
\begin{itemize}
50+
\item incorporation of the Technical Specifications
4751
\begin{itemize}
4852
\item ISO/IEC TS 19217:2015 \textit{Programming Languages --- \Cpp{} Extensions for concepts},
4953
\item ISO/IEC TS 21425:2017 \textit{Programming Languages --- \Cpp{} Extensions for ranges},
5054
\item ISO/IEC TS 22277:2017 \textit{Programming Languages --- \Cpp{} Extensions for Coroutines},
5155
\item ISO/IEC TS 21544:2018 \textit{Programming Languages --- Extensions to \Cpp{} for Modules},
5256
\item portions of ISO/IEC TS 19571:2016 \textit{Programming Languages --- Technical specification for \Cpp{} extensions for concurrency}, and % latch and barrier
53-
\item portions of ISO/IEC TS 19568:2017 \textit{Programming Languages --- \Cpp{} Extensions for Library Fundamentals}.
57+
\item portions of ISO/IEC TS 19568:2017 \textit{Programming Languages --- \Cpp{} Extensions for Library Fundamentals},
5458
\end{itemize}
55-
56-
The main changes compared to the previous edition are as follows:
57-
58-
\begin{itemize}
5959
% language changes
60-
\item addition of concepts, \grammarterm{requires-clause}s, and \grammarterm{requires-expression}s and
60+
\item addition of concepts, \grammarterm{requires-clause}s, \grammarterm{requires-expression}s, and
6161
\libheaderref{concepts} header
6262
\item addition of coroutines, including
6363
\keyword{co_yield}, \keyword{co_await}, and \keyword{co_return} keywords and
@@ -71,111 +71,43 @@ \chapter{Foreword}
7171
\item support for optional reason string in \tcode{[[nodiscard]]} attribute
7272
\item ability to require constant initialization with \keyword{constinit} keyword
7373
\item ability to require constant evaluation with \keyword{consteval} keyword
74-
\item extension of constant evaluation support to cover
75-
\begin{itemize}
76-
\item memory allocation and deallocation
77-
\item virtual function calls
78-
\item \keyword{dynamic_cast} and \keyword{typeid}
79-
\item changing the active member of a union
80-
\item uninitialized variables
81-
\end{itemize}
82-
\item support for constexpr functions to contain
83-
\keyword{catch} handlers and \grammarterm{asm-declaration}s
84-
that are not reached during constant evaluation
74+
\item extensions to constant evaluation
8575
\item support for controlling destruction in a class-specific operator delete function
8676
\item addition of \keyword{using} \keyword{enum} declaration
8777
\item addition of \keyword{char8_t} type
88-
\item guarantee that \keyword{char16_t} and \keyword{char32_t} literals
89-
are encoded as UTF-16 and UTF-32 respectively
9078
\item support for an initializer statement in range-based for loops
9179
\item support for default member initializers for bit-fields
9280
\item support for parenthesized aggregate initialization
93-
\item extended support for lambda expressions, including
94-
\begin{itemize}
95-
\item explicit \grammarterm{template-head}s in generic lambdas
96-
\item default construction and assignment of stateless closure types
97-
\item lambda expressions in unevaluated operands
98-
\item pack expansion of lambda \grammarterm{init-capture}s
99-
\end{itemize}
100-
\item generalized support for structured bindings
81+
\item extensions to lambda expressions
82+
\item extensions to structured bindings
10183
\item support for inline namespaces in nested namespace definitions
10284
\item support for conditionally-explicit member functions
103-
\item extended support for class template argument deduction to cover
104-
aggregate initialization and alias templates
85+
\item extensions to class template argument deduction
10586
\item reduced cases in which \keyword{typename} is required
10687
\item support for calling an undeclared \grammarterm{template-id}
10788
via argument-dependent name lookup
108-
\item relaxed access checking rules in template specialization declarations
10989
\item revised memory model
110-
\item expanded cases in which returned or thrown variables are implicitly moved
11190
\item extended support for variadic macros with \mname{VA_OPT}
11291
% library changes
11392
\item feature test macros and \libheaderref{version} header
114-
\item restricted valid uses of standard library functions and function templates
11593
\item addition of ranges and \libheaderref{ranges} header
11694
\item addition of calendar and time zone support
11795
\item addition of text formatting library and \libheaderref{format} header
118-
\item addition of synchronization facilities for
119-
waiting, notifications, semaphores, latches, and barriers, and
120-
\libheaderref{barrier}, \libheaderref{latch} and \libheaderref{semaphore} headers
96+
\item addition of \libheaderref{barrier}, \libheaderref{latch}, and \libheaderref{semaphore} headers
12197
\item addition of mathematical constants library and \libheaderref{numbers} header
12298
\item support for representing source locations and \libheaderrefx{source_location}{source.location.syn} header
12399
\item addition of \tcode{span} view and \libheaderref{span} header
124100
\item addition of joining thread class and \libheaderrefx{stop_token}{thread.stoptoken.syn} header
125-
\item extensions to atomic types and operations, including
126-
\begin{itemize}
127-
\item new class template \tcode{atomic_ref}
128-
\item new atomic floating-point operations
129-
\item new atomic smart pointer types
130-
\item support for compare-and-exchange operations on types with padding
131-
\item conversion of \tcode{memory_order} to a scoped enumeration
132-
\end{itemize}
101+
\item extensions to atomic types and operations
133102
\item addition of \tcode{unsequenced} execution policy
134-
\item new utility functions, types, and templates in the standard library, including
135-
\begin{itemize}
136-
\item \raggedright new type traits
137-
\tcode{is_bounded_array},
138-
\tcode{is_corresponding_member},
139-
\tcode{is_layout_compatible},
140-
\tcode{is_nothrow_convertible},
141-
\tcode{is_pointer_interconvertible_base_of},
142-
\tcode{is_pointer_interconvertible_with_class}, and
143-
\tcode{is_unbounded_array}
144-
\item new transformation traits
145-
\tcode{remove_cvref},
146-
\tcode{type_identity},
147-
\tcode{unwrap_ref_decay}, and
148-
\tcode{unwrap_reference}
149-
\item new standard library primitive functions \tcode{assume_aligned} and
150-
\tcode{is_constant_evaluated}
151-
\item new free functions \tcode{erase} and \tcode{erase_if} for containers
152-
\item utilities for uses-allocator construction
153-
\item function template \tcode{to_address}
154-
\item function template \tcode{bind_front}
155-
\item function template \tcode{to_array}
156-
\end{itemize}
157-
\item \tcode{make_shared} support for array types
158-
\item support for allocating objects owned by \tcode{shared_ptr} and \tcode{unique_ptr}
159-
with default initialization
103+
\item new utility functions, types, and templates in the standard library
160104
\item addition of bit manipulation library and \libheaderref{bit} header
161105
\item addition of a synchronized buffered output stream and \libheaderref{syncstream} header
162-
\item addition of \tcode{shift} algorithms
163-
\item addition of \tcode{midpoint} and \tcode{lerp} math functions
164-
\item use of \tcode{[[nodiscard]]} attribute in the standard library
165106
\item support for heterogeneous lookup for unordered containers
166107
\item support for element existence detection in associative containers
167-
\item change to return removed element count
168-
from \tcode{remove}, \tcode{remove_if}, and \tcode{unique}
169-
member functions on \tcode{list} and \tcode{forward_list}
170-
\item addition of \tcode{starts_with} and \tcode{ends_with}
171-
to \tcode{basic_string} and \tcode{basic_string_view}
172108
\item support for move semantics in \libheaderrefx{numeric}{numeric.ops.overview} algorithms
173109
\item support for efficient access to the buffer of a \tcode{basic_stringbuf}
174110
\item extended constant expression evaluation support in the standard library
175-
to cover more algorithms, utilities, and types, including
176-
\tcode{pair}, \tcode{tuple}, \tcode{vector}, and \tcode{string}
177-
% annexes
178-
\item removal of deprecated features
179111
\end{itemize}
180112

181113
Any feedback or questions on this document

0 commit comments

Comments
 (0)