0:01 Introduction: Rainer Grimm provides an overview of the upcoming C++26 standard, highlighting core language features, library improvements, and concurrency enhancements.
0:51 Key Features: Reflection, contracts, and st execution are presented as the major additions in C++26.
1:07 Core Language:
1:40 Reflection: Enables program introspection and modification. The reflection operator (^^) converts code into a reflection value for analysis. Examples demonstrate displaying member names and values of structs and analyzing class structure.
9:54 Contracts: Introduces preconditions, postconditions, and invariants to function interfaces for enhanced reliability and error checking. Runtime errors occur when contracts are violated.
14:21 Placeholder: The underscore (_) can be used as a placeholder for unused function parameters, improving readability.
14:49 Static Assert: Expands static_assert functionality with the ability to use user-defined types in error messages, enhancing compile-time error checking.
18:57 Template Improvements: Introduces P0847: P-indexing, enabling indexing into parameter packs within variadic templates.
21:57 Delete Reason: Allows specifying a reason when deleting a function, improving code understanding and maintainability.
24:50 Library:
24:56 String and String View: Includes char conversion functions with bool return types, support for initializing string streams with string view literals, and concatenation of strings and string views.
27:06 Locale-Aware Output: Extends locale support to std::to_chars and std::format for consistent number formatting.
28:25 In Place Vector: Introduces std::in_place_vector, a dynamically resizable vector with fixed compile-time capacity, offering a potential replacement for std::vector in specific scenarios.
31:25 Format Improvements: Adds support for formatting raw pointers in std::format.
32:15 Ranges Improvements: Adds std::ranges::generate and std::ranges::concat, and expands constexpr support for various range algorithms.
33:43 Linear Algebra Support: Includes <std/linalg> for basic linear algebra operations based on BLAS.
34:25 Sub MD Span: Enables creating subviews of std::mdspan objects, providing more flexible views into multidimensional data.
38:53 Debugging Support: Introduces functions like std::breakpoint, std::breakpoint_if_debugging, and std::is_debugger_present for enhanced debugging capabilities.
39:51 Concurrency:
39:58 St Execution: Provides a framework for managing asynchronous code execution on various resources (e.g., thread pools, GPUs).
41:03 Key Abstractions: Senders, receivers (consumers), and a set of algorithms form the core of st execution.
42:29 Example: Demonstrates scheduling work packages on a thread pool using sender factories and continuation building.
46:34 Example (Simplified): Showcases chaining asynchronous operations using std::execution::then for building a workflow.
48:30 Execution Source, Scheduler, Sender: Explains the relationship between execution sources (e.g., thread pools), schedulers (handles to sources), and senders (descriptions of work).
51:15 Senders and Consumers: Outlines sender factories, scheduling capabilities, and the role of consumers in triggering and receiving results from workflows.
Note: The presentation acknowledges that C++26 is still under development, and some features may change before standardization.