You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This sixth edition cancels and replaces the fifth edition
45
45
(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
47
51
\begin{itemize}
48
52
\item ISO/IEC TS 19217:2015 \textit{Programming Languages --- \Cpp{} Extensions for concepts},
49
53
\item ISO/IEC TS 21425:2017 \textit{Programming Languages --- \Cpp{} Extensions for ranges},
50
54
\item ISO/IEC TS 22277:2017 \textit{Programming Languages --- \Cpp{} Extensions for Coroutines},
51
55
\item ISO/IEC TS 21544:2018 \textit{Programming Languages --- Extensions to \Cpp{} for Modules},
52
56
\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},
54
58
\end{itemize}
55
-
56
-
The main changes compared to the previous edition are as follows:
57
-
58
-
\begin{itemize}
59
59
% 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
61
61
\libheaderref{concepts} header
62
62
\item addition of coroutines, including
63
63
\keyword{co_yield}, \keyword{co_await}, and \keyword{co_return} keywords and
@@ -71,111 +71,43 @@ \chapter{Foreword}
71
71
\item support for optional reason string in \tcode{[[nodiscard]]} attribute
72
72
\item ability to require constant initialization with \keyword{constinit} keyword
73
73
\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
85
75
\item support for controlling destruction in a class-specific operator delete function
86
76
\item addition of \keyword{using} \keyword{enum} declaration
87
77
\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
90
78
\item support for an initializer statement in range-based for loops
91
79
\item support for default member initializers for bit-fields
92
80
\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
101
83
\item support for inline namespaces in nested namespace definitions
102
84
\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
105
86
\item reduced cases in which \keyword{typename} is required
106
87
\item support for calling an undeclared \grammarterm{template-id}
107
88
via argument-dependent name lookup
108
-
\item relaxed access checking rules in template specialization declarations
109
89
\item revised memory model
110
-
\item expanded cases in which returned or thrown variables are implicitly moved
111
90
\item extended support for variadic macros with \mname{VA_OPT}
112
91
% library changes
113
92
\item feature test macros and \libheaderref{version} header
114
-
\item restricted valid uses of standard library functions and function templates
115
93
\item addition of ranges and \libheaderref{ranges} header
116
94
\item addition of calendar and time zone support
117
95
\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
121
97
\item addition of mathematical constants library and \libheaderref{numbers} header
122
98
\item support for representing source locations and \libheaderrefx{source_location}{source.location.syn} header
123
99
\item addition of \tcode{span} view and \libheaderref{span} header
124
100
\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
133
102
\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
160
104
\item addition of bit manipulation library and \libheaderref{bit} header
161
105
\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
165
106
\item support for heterogeneous lookup for unordered containers
166
107
\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}
172
108
\item support for move semantics in \libheaderrefx{numeric}{numeric.ops.overview} algorithms
173
109
\item support for efficient access to the buffer of a \tcode{basic_stringbuf}
174
110
\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}
0 commit comments