Small language features (C++20)
__VA_OPT__, explicit(bool), using enum, range-for with initializer, typename relaxation, nested inline namespaces, array size deduction in new, destroying delete, hidden friends, and core fixes.
Connected features
No dependency lines — on the map this feature hangs off C++20 by a star edge.
Papers
22 · Toronto 2017 → Prague 2020Adds __VA_OPT__ for variadic macros.
Allows default member initializers for bit-fields.
Fixes binding of const-qualified pointers to members to rvalues.
Distinguishes temporary objects from temporary expressions.
Adds range-based for with an initializer.
Resolves core issue 1331 (const mismatch with defaulted copy constructor).
Relaxes access checking on explicit specializations.
Lets ADL find function templates not visible via ordinary lookup: f<int>(x).
Resolves core issue 1581 (when are constexpr member functions defined).
Allows omitting typename in contexts where only a type can appear.
Relaxes the range-for customization point lookup rules.
Adds destroying operator delete (std::destroying_delete_t).
Adds explicit(bool).
Clarifies the __VA_OPT__ wording.
Allows namespace a::inline b {}.
Fixes the ambiguity between class-name and type-name for simple-template-ids.
Allows array size deduction in new expressions: new int[]{1, 2, 3}.
Reverses CWG DR1778 so defaulted special members keep their explicit exception specifications.
Permits conversions to arrays of unknown bound.
Adds using enum.
Adds the term 'hidden friends' to the wording.
Makes conversion from T* to bool narrowing (DR).