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
| **Contracts** | Language support for preconditions, postconditions, and assertions (`expects`, `ensures`). Major safety and correctness feature long awaited since C++20 removal.
1851
+
| **Static Reflection** | Compile-time introspection of types, members, functions, attributes. Enables metaprogramming without template hacks.
1852
+
| **Pattern Matching** | Functional-style `match`/`inspect` syntax for variant-like types and structured branching.
| **Pattern Matching v2 (full algebraic matching)** | Extends the accepted pattern matching to support destructuring, guards, exhaustive checking, and more functional-style power. | Initial version was accepted, but the full vision is large and still evolving.
1875
+
| **Metaclasses / Compile-time Classes** | A revolutionary feature allowing user-defined “kinds of classes” (value types, interfaces, etc.) enforced by the compiler. | Huge design space and tooling impact. Needs more experience from Reflection first. Perhaps more long-term than likely for C++29.
1876
+
| **Unified Call Syntax (UFCS)** | Allows `obj.func(x)` to call free functions as if they were members. Improves discoverability and pipeline style. | Lots of bikeshedding over lookup rules and ambiguity.
1877
+
| **Executor refinements & Networking TS integration** | Completing the networking library on top of Senders/Receivers. | Senders/Receivers landed late; networking integration needs time to bake.
1878
+
| **Trivial Relocation** | Lets objects be safely moved with `memcpy` when possible, which should lead to a massive performance win for containers. | Deep ABI and library implications; needed more consensus.
1879
+
| **`std::async_scope` and structured concurrency** | High-level lifetime management for async tasks (similar to modern languages). | Depends on ecosystem experience with Senders/Receivers first.
1880
+
| **SIMD Everywhere (`std::simd` expansion)** | Making vectorization first-class and pervasive across the standard library. | Big scope and ongoing performance experimentation.
1881
+
| **Language support for contracts tooling modes** | The accepted Contracts feature is the “MVP”. Advanced tooling levels and build modes are still being designed. | Needed to ship a minimal version first.
1882
+
| **Compile-time Reflection v2 (code injection / metaprogramming)** | Extends reflection to allow generating new declarations. | Committee intentionally staged reflection to reduce risk.
1883
+
| **Pattern-based error handling (try expressions)** | Expression-based error propagation similar to Rust. | Interaction with exceptions and `expected` still debated.
1884
+
| **`std::status_code` / modern error system** | A zero-overhead alternative to exceptions and `std::error_code`. | Competes with existing mechanisms; consensus not complete.
1885
+
| **Heterogeneous lookup everywhere** | Transparent hashing/comparisons across more containers and algorithms. | Lots of small but invasive library changes.
1886
+
1887
+
|===
1888
+
1889
+
. *Are there _themes_ to a release of the Standard?*
1890
+
+
1891
+
To an extent, pass:[C++20] was the "coroutines and ranges" release, then pass:[C++23] was a cleanup release. pass:[C++26] is shaping up to be the "Safety and Async and Metaprogramming" release. Perhaps pass:[C++29] will be the "Performance, Networking, and Compile-time Metaprogramming Superpowers" release.
0 commit comments