|
| 1 | +--- |
| 2 | +title: "Appendix 3: Modern C++ Feature Index" |
| 3 | +type: book-en-us |
| 4 | +order: 15 |
| 5 | +--- |
| 6 | + |
| 7 | +# Appendix 3: Modern C++ Feature Index |
| 8 | + |
| 9 | +This appendix groups the main features covered in this book by standard version and notes the chapter where each appears, so you can browse "by version" or quickly locate a feature later. If you are already familiar with the content of a given version, feel free to jump straight to the section you need. |
| 10 | + |
| 11 | +## C++11 / C++14 |
| 12 | + |
| 13 | +| Feature | Chapter | |
| 14 | +|:--------|:--------| |
| 15 | +| `nullptr` | Chapter 2 | |
| 16 | +| `constexpr` (relaxed in C++14) | Chapter 2 | |
| 17 | +| Initializer lists (`std::initializer_list`) | Chapter 2 | |
| 18 | +| `auto` type deduction | Chapter 2 | |
| 19 | +| `decltype` / `decltype(auto)` (C++14) | Chapter 2 | |
| 20 | +| Tail return type | Chapter 2 | |
| 21 | +| Range-based for loop | Chapter 2 | |
| 22 | +| External / alias / default / variadic templates | Chapter 2 | |
| 23 | +| Delegating and inheriting constructors | Chapter 2 | |
| 24 | +| Explicit `override` / `final` | Chapter 2 | |
| 25 | +| Explicit `= default` / `= delete` | Chapter 2 | |
| 26 | +| Strongly-typed enums (`enum class`) | Chapter 2 | |
| 27 | +| SFINAE and `std::enable_if` | Chapter 2 | |
| 28 | +| Lambda expressions, generic lambdas (C++14) | Chapter 3 | |
| 29 | +| `std::function`, `std::bind` | Chapter 3 | |
| 30 | +| Rvalue references, move semantics, perfect forwarding | Chapter 3 | |
| 31 | +| `std::array`, `std::forward_list`, unordered containers, `std::tuple` | Chapter 4 | |
| 32 | +| Smart pointers `shared_ptr` / `unique_ptr` / `weak_ptr`, `make_unique` (C++14) | Chapter 5 | |
| 33 | +| Regular expressions (`std::regex`) | Chapter 6 | |
| 34 | +| Threads, mutexes, futures, condition variables, atomics & memory model | Chapter 7 | |
| 35 | +| `long long`, `noexcept`, raw/user-defined literals, memory alignment | Chapter 9 | |
| 36 | + |
| 37 | +## C++17 |
| 38 | + |
| 39 | +| Feature | Chapter | |
| 40 | +|:--------|:--------| |
| 41 | +| Structured bindings | Chapter 2 | |
| 42 | +| `if` / `switch` init-statements | Chapter 2 | |
| 43 | +| `if constexpr` | Chapter 2 | |
| 44 | +| Fold expressions, `auto` non-type template parameters | Chapter 2 | |
| 45 | +| Inline variables, nested namespaces, `constexpr` lambda | Chapter 2 | |
| 46 | +| Single-argument `static_assert`, new aggregate rules | Chapter 2 | |
| 47 | +| Boolean logic metafunctions, `__has_include` | Chapter 2 | |
| 48 | +| Guaranteed copy elision | Chapter 3 | |
| 49 | +| `std::string_view`, `std::byte` | Chapter 4 | |
| 50 | +| Associative container improvements (`try_emplace` / `merge` …), `std::pmr` | Chapter 4 | |
| 51 | +| `std::filesystem` | Chapter 8 | |
| 52 | +| `new` for over-aligned types | Chapter 9 | |
| 53 | +| Mathematical special functions | Chapter 9 | |
| 54 | + |
| 55 | +## C++20 |
| 56 | + |
| 57 | +| Feature | Chapter | |
| 58 | +|:--------|:--------| |
| 59 | +| Concepts and constraints | Chapter 10 | |
| 60 | +| Modules | Chapter 10 | |
| 61 | +| Ranges | Chapter 10 | |
| 62 | +| Coroutines | Chapter 10 | |
| 63 | +| `std::bit_cast` | Chapter 9 | |
| 64 | + |
| 65 | +## C++23 |
| 66 | + |
| 67 | +| Feature | Chapter | |
| 68 | +|:--------|:--------| |
| 69 | +| Deducing `this` (explicit object parameter) | Chapter 11 | |
| 70 | +| `if consteval`, multidimensional subscript | Chapter 11 | |
| 71 | +| `auto(x)`, static `operator()`, `[[assume]]` | Chapter 11 | |
| 72 | +| `std::expected` | Chapter 11 | |
| 73 | +| `std::print` / `std::println` | Chapter 11 | |
| 74 | +| `std::mdspan`, `std::flat_map` / `std::flat_set` | Chapter 11 | |
| 75 | +| Ranges additions (`zip` …), `string::contains`, `std::byteswap` | Chapter 11 | |
| 76 | + |
| 77 | +## C++26 (outlook) |
| 78 | + |
| 79 | +| Feature | Chapter | |
| 80 | +|:--------|:--------| |
| 81 | +| Static reflection | Chapter 12 | |
| 82 | +| Contracts | Chapter 12 | |
| 83 | +| Pack indexing, `= delete` with a reason, the placeholder `_` | Chapter 12 | |
| 84 | +| `std::execution` (senders / receivers) | Chapter 12 | |
| 85 | +| Saturation arithmetic | Chapter 12 | |
| 86 | + |
| 87 | +[Table of Content](./toc.md) | [Previous Chapter](./appendix2.md) |
| 88 | + |
| 89 | +## Licenses |
| 90 | + |
| 91 | +<a rel="license" href="https://creativecommons.org/licenses/by-nc-nd/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-nd/4.0/88x31.png" /></a><br />This work was written by [Ou Changkun](https://changkun.de) and licensed under a <a rel="license" href="https://creativecommons.org/licenses/by-nc-nd/4.0/">Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License</a>. The code of this repository is open sourced under the [MIT license](../../LICENSE). |
0 commit comments