Useful helper functions and utilities (used within code samples)
New language features
Uniform initialization (int num{42}, aggregate initialization, named initialization)
Structured binding (auto[a,b] = someStruct)
Avoid out parameters, prefer (multiple) return values (preferred return types: pair, tuple, struct)
Initializer within if and switch statement (if (int i=GetValue(); i<2) {..})
attributes (maybe_unused, nodiscard, fallthrough, …)
spaceship operator (<=>, three-way comparison operator)
Basic functionality
Strings and streams (helper functions: trim, read text file, BOM, read user input)
container classes (vector, map, set)
iterators (generator class, iterator adapter (insert/stream/reverse iterator), combining two ranges (zip))
algorithms (copy, copy_if, join, sort, partial_sort, partition, transform, find, find_if, clamp, next_permutation, merge)
lambda (std::function as polymorphic wrapper, concat by recursion, logical conjunction, jump table, template lambda)
fold expressions (printing any arguments, check for same types, comma operator, working with variadic tuple)
Date and Time (std::chrono)
std::filesystem (get file infos, check directories, copy files)
std::format (format numeric values, e.g. {:>8}, {0:8.4}, writing formatters for user defined types)
std::regex (check if string matches pattern, find expressions within longer text)
std::optional (allow not existence of a value)
std::any (wraps any type)
std::variant (store different types from a known set within the same variable, type safe)
smart pointers (unique_ptr, shared_ptr, weak_ptr)
std::span (handle array/vector/string in the same way as contiguous range of objects)
Smaller improvements
consteval, constinit, constexpr, const (compiletime/runtime variables/funcs, initialization of static variables)
container improvements (constexpr, to_array, erase_if, map.contains, string.starts/ends_with)
template improvements (compile-time if, CTAD, conditionally explicit constructor, string and float as non-type template param)
arithmetic utilities (std::cmp_less, std::numbers::pi/sqrt2, std::midpoint, std::lerp)
random numbers
other improvements (inline variables, compile time if, CTAD)
External Links to C++20 topics:
std::atomic_ref (safely writing/reading an object reference)
std::atomic_shared_ptr, std::atomic_weak_ptr (safely writing/reading a smart pointer)
std::atomic_flag (boolean flag, lock-free implementation, methods to check state and wait for setting of value)