Difference between revisions of "cpp/experimental"
m (→Non-TS proposals: fmt.) |
m (→Non-TS proposals: 2024-08 updates; fmt.) |
||
Line 148: | Line 148: | ||
|- | |- | ||
|Linear Algebra | |Linear Algebra | ||
− | |{{ | + | |{{mark ok}}[[cpp/header/linalg|Merged into C++26]]. Proposal: {{stddoc|P1673R13}} (2023-11-10). |
{{cot|More proposals:}} | {{cot|More proposals:}} | ||
* A proposal to add linear algebra support to the C++ standard library - {{stddoc|P1385R7}} (2022-10-15) | * A proposal to add linear algebra support to the C++ standard library - {{stddoc|P1385R7}} (2022-10-15) | ||
− | * Evolving a Standard C++ Linear Algebra Library from the BLAS - {{stddoc|P1674R2}} (2022-05-15) | + | * Evolving a Standard C++ Linear Algebra Library from the {{enwiki|Basic Linear Algebra Subprograms|BLAS}} - {{stddoc|P1674R2}} (2022-05-15) |
* Presentation of {{stddoc|P1385R7}} to LEWG at Issaquah 2023 - {{stddoc|P2802R0}} (2023-02-09) | * Presentation of {{stddoc|P1385R7}} to LEWG at Issaquah 2023 - {{stddoc|P2802R0}} (2023-02-09) | ||
+ | * Fix C++26 by optimizing {{c/core|linalg::conjugated}} for non-complex value types - {{stddoc|P3050R2}} (2024-08-13) | ||
+ | * Fix C++26 by making the {{enwiki|Symmetric matrix|symmetric}} and {{enwiki|Hermitian matrix|Hermitian}} rank-k and rank-2k updates consistent with the {{enwiki|Basic Linear Algebra Subprograms|BLAS}} - {{stddoc|P3371R0}} (2024-08-12) | ||
{{cob}} | {{cob}} | ||
|{{header|linalg}} | |{{header|linalg}} | ||
Line 158: | Line 160: | ||
|{{lc|std::execution}} | |{{lc|std::execution}} | ||
|Forwarded to LWG, wording in progress.<br> | |Forwarded to LWG, wording in progress.<br> | ||
− | {{ | + | {{mark ok}}[[cpp/header/execution|Merged into C++26]]. Proposal: {{stddoc|p2300r10}} (2024-06-28). |
{{cot|More proposals:}} | {{cot|More proposals:}} | ||
* System execution context - {{stddoc|P2079R4}} (2024-05-22) | * System execution context - {{stddoc|P2079R4}} (2024-05-22) | ||
Line 169: | Line 171: | ||
* Improving diagnostics for Sender expressions - {{stddoc|P3164R0}} (2024-03-01) | * Improving diagnostics for Sender expressions - {{stddoc|P3164R0}} (2024-03-01) | ||
* Reconsidering the {{c/core|std::execution::on}} algorithm - {{stddoc|P3175R3}} (2024-06-25) | * Reconsidering the {{c/core|std::execution::on}} algorithm - {{stddoc|P3175R3}} (2024-06-25) | ||
− | * {{tt|finally}}, {{tt|write_env}}, and {{tt|unstoppable}} Sender Adaptors - {{stddoc| | + | * {{tt|finally}}, {{tt|write_env}}, and {{tt|unstoppable}} Sender Adaptors - {{stddoc|P3284R1}} (2024-07-16) |
* Fixing Lazy Sender Algorithm Customization - {{stddoc|P3303R1}} (2024-06-25) | * Fixing Lazy Sender Algorithm Customization - {{stddoc|P3303R1}} (2024-06-25) | ||
+ | * A Utility for Creating Execution Environments - {{stddoc|P3325R3}} (2024-07-23) | ||
{{cob}} | {{cob}} | ||
|{{rl|execution|Execution}}, {{header|execution}} | |{{rl|execution|Execution}}, {{header|execution}} | ||
|- | |- | ||
|{{lc|std::inplace_vector}} | |{{lc|std::inplace_vector}} | ||
− | |{{ | + | |{{mark ok}}[[cpp/header/inplace_vector|Merged into C++26]]. Proposal: {{stddoc|P0843R14}} (2024-06-26). |
{{cot|More proposals:}} | {{cot|More proposals:}} | ||
* {{tt|inplace_vector}} - {{stddoc|P0843}}({{stddoc|P0843R7|R7}}) LEWG presentation - {{stddoc|P2925R0}} (2023-06-16) | * {{tt|inplace_vector}} - {{stddoc|P0843}}({{stddoc|P0843R7|R7}}) LEWG presentation - {{stddoc|P2925R0}} (2023-06-16) | ||
Line 200: | Line 203: | ||
{{cot|More proposals:}} | {{cot|More proposals:}} | ||
* Scalable Reflection in C++ - {{stddoc|P1240R2}} (2022-01-14) | * Scalable Reflection in C++ - {{stddoc|P1240R2}} (2022-01-14) | ||
+ | * Expansion statements - {{stddoc|P1306R2}} (2024-05-07) | ||
+ | * Reflection on attributes - {{stddoc|P1887R1}} (2020-01-13) | ||
+ | * Metaprogramming - {{stddoc|P2237R0}} (2020-10-15) | ||
* Python Bindings with Value-Based Reflection - {{stddoc|P2911R1}} (2023-10-13) | * Python Bindings with Value-Based Reflection - {{stddoc|P2911R1}} (2023-10-13) | ||
− | * Reflection for C++26 - {{stddoc| | + | * Reflection for C++26 - {{stddoc|P2996R5}} (2024-08-14) |
* Using Reflection to Replace a Metalanguage for Generating JS Bindings - {{stddoc|P3010R0}} (2023-10-13) | * Using Reflection to Replace a Metalanguage for Generating JS Bindings - {{stddoc|P3010R0}} (2023-10-13) | ||
* ABI comparison with reflection - {{stddoc|P3095R0}} (2024-02-15) | * ABI comparison with reflection - {{stddoc|P3095R0}} (2024-02-15) | ||
Line 255: | Line 261: | ||
* Constant evaluation of Contracts - {{stddoc|P2894R2}} (2024-01-11) | * Constant evaluation of Contracts - {{stddoc|P2894R2}} (2024-01-11) | ||
* Outstanding design questions for the Contracts MVP - {{stddoc|P2896R0}} (2023-08-22) | * Outstanding design questions for the Contracts MVP - {{stddoc|P2896R0}} (2023-08-22) | ||
− | * Contracts for C++ - {{stddoc| | + | * Contracts for C++ - {{stddoc|P2900R8}} (2024-07-26) |
* A Principled Approach to Open Design Questions for Contracts - {{stddoc|P2932R3}} (2024-01-16) | * A Principled Approach to Open Design Questions for Contracts - {{stddoc|P2932R3}} (2024-01-16) | ||
* An Attribute-Like Syntax for Contracts - {{stddoc|P2935R4}} (2023-11-05) | * An Attribute-Like Syntax for Contracts - {{stddoc|P2935R4}} (2023-11-05) | ||
* Contracts must avoid disclosing sensitive information - {{stddoc|P2947R0}} (2023-07-20) | * Contracts must avoid disclosing sensitive information - {{stddoc|P2947R0}} (2023-07-20) | ||
− | * Slides for P2861R0: Narrow Contracts and {{c/core|noexcept}} are Inherently Incompatible - {{stddoc|P2949R0}} (2023-07-14) | + | * Slides for {{stddoc|P2861R0}}: Narrow Contracts and {{c/core|noexcept}} are Inherently Incompatible - {{stddoc|P2949R0}} (2023-07-14) |
* Contracts and virtual functions for the Contracts MVP - {{stddoc|P2954R0}} (2023-08-03) | * Contracts and virtual functions for the Contracts MVP - {{stddoc|P2954R0}} (2023-08-03) | ||
* Contracts and coroutines - {{stddoc|P2957R1}} (2024-01-13) | * Contracts and coroutines - {{stddoc|P2957R1}} (2024-01-13) | ||
Line 265: | Line 271: | ||
* An Overview of Syntax Choices for Contracts - {{stddoc|P3028R0}} (2023-11-05) | * An Overview of Syntax Choices for Contracts - {{stddoc|P3028R0}} (2023-11-05) | ||
* Protection against modifications in contracts - {{stddoc|P3071R1}} (2023-12-17) | * Protection against modifications in contracts - {{stddoc|P3071R1}} (2023-12-17) | ||
− | * Remove evaluation_undefined_behavior and will_continue from the Contracts MVP - {{stddoc|P3073R0}} (2024-01-27) | + | * Remove {{tt|evaluation_undefined_behavior}} and {{tt|will_continue}} from the Contracts MVP - {{stddoc|P3073R0}} (2024-01-27) |
* Should {{tt|ignore}} and {{tt|observe}} exist for constant evaluation of contracts? - {{stddoc|P3079R0}} (2024-01-11) | * Should {{tt|ignore}} and {{tt|observe}} exist for constant evaluation of contracts? - {{stddoc|P3079R0}} (2024-01-11) | ||
* Contracts for C++: Support for virtual functions - {{stddoc|P3097R0}} (2024-04-15) | * Contracts for C++: Support for virtual functions - {{stddoc|P3097R0}} (2024-04-15) | ||
− | * Undefined and erroneous | + | * Undefined and erroneous behavior are contract violations - {{stddoc|P3100R0}} (2024-05-21) |
* Tokyo Technical Fixes to Contracts - {{stddoc|P3119R1}} (2024-05-09) | * Tokyo Technical Fixes to Contracts - {{stddoc|P3119R1}} (2024-05-09) | ||
* Contracts on virtual functions for the Contracts MVP - {{stddoc|P3165R0}} (2024-02-27) | * Contracts on virtual functions for the Contracts MVP - {{stddoc|P3165R0}} (2024-02-27) | ||
* Inherited contracts - {{stddoc|P3169R0}} (2024-04-14) | * Inherited contracts - {{stddoc|P3169R0}} (2024-04-14) | ||
* Contract testing support - {{stddoc|P3183R1}} (2024-05-22) | * Contract testing support - {{stddoc|P3183R1}} (2024-05-22) | ||
− | * Slides for LEWG presentation of P2900R6: Contracts for C++ - {{stddoc|P3189R0}} (2024-03-19) | + | * Slides for LEWG presentation of {{stddoc|P2900R6}}: Contracts for C++ - {{stddoc|P3189R0}} (2024-03-19) |
− | * Slides for | + | * Slides for LEWG presentation of {{stddoc|P2900R7}}: Contracts for C++ - {{stddoc|P3190R0}} (2024-03-20) |
− | * A response to the Tokyo EWG polls on the Contracts MVP (P2900R6) - {{stddoc|P3197R0}} (2024-04-12) | + | * A response to the Tokyo EWG polls on the Contracts MVP ({{stddoc|P2900R6}}) - {{stddoc|P3197R0}} (2024-04-12) |
* A takeaway from the Tokyo LEWG meeting on Contracts MVP - {{stddoc|P3198R0}} (2024-03-29) | * A takeaway from the Tokyo LEWG meeting on Contracts MVP - {{stddoc|P3198R0}} (2024-03-29) | ||
* Contracts for C++: Naming the ''Louis semantic'' - {{stddoc|P3226R0}} (2024-04-12) | * Contracts for C++: Naming the ''Louis semantic'' - {{stddoc|P3226R0}} (2024-04-12) | ||
Line 283: | Line 289: | ||
* C++ contracts with regards to function pointers - {{stddoc|P3250R0}} (2024-05-07) | * C++ contracts with regards to function pointers - {{stddoc|P3250R0}} (2024-05-07) | ||
* C++ contracts and coroutines - {{stddoc|P3251R0}} (2024-05-07) | * C++ contracts and coroutines - {{stddoc|P3251R0}} (2024-05-07) | ||
− | * Make the predicate of contract_assert more regular - {{stddoc|P3257R0}} (2024-04-26) | + | * Make the predicate of {{tt|contract_assert}} more regular - {{stddoc|P3257R0}} (2024-04-26) |
* Ship Contracts in a TS - {{stddoc|P3265R3}} (2024-05-28) | * Ship Contracts in a TS - {{stddoc|P3265R3}} (2024-05-28) | ||
* Approaches to C++ Contracts - {{stddoc|P3267R1}} (2024-05-22) | * Approaches to C++ Contracts - {{stddoc|P3267R1}} (2024-05-22) | ||
* C++ Contracts Constification Challenges Concerning Current Code - {{stddoc|P3268R0}} (2024-05-07) | * C++ Contracts Constification Challenges Concerning Current Code - {{stddoc|P3268R0}} (2024-05-07) | ||
* Do Not Ship Contracts as a TS - {{stddoc|P3269R0}} (2024-05-21) | * Do Not Ship Contracts as a TS - {{stddoc|P3269R0}} (2024-05-21) | ||
− | * Repetition, Elision, and Constification w.r.t. contract_assert - {{stddoc|P3270R0}} (2024-05-22) | + | * Repetition, Elision, and Constification w.r.t. {{tt|contract_assert}} - {{stddoc|P3270R0}} (2024-05-22) |
* Function Usage Types (Contracts for Function Pointers) - {{stddoc|P3271R0}} (2024-05-20) | * Function Usage Types (Contracts for Function Pointers) - {{stddoc|P3271R0}} (2024-05-20) | ||
− | * P2900 Is Superior to a Contracts TS - {{stddoc|P3276R0}} (2024-05-18) | + | * {{stddoc|P2900}} Is Superior to a Contracts TS - {{stddoc|P3276R0}} (2024-05-18) |
* Contracts: Protecting The Protector - {{stddoc|P3285R0}} (2024-05-15) | * Contracts: Protecting The Protector - {{stddoc|P3285R0}} (2024-05-15) | ||
* Integrating Existing Assertions With Contracts - {{stddoc|P3290R1}} (2024-07-12) | * Integrating Existing Assertions With Contracts - {{stddoc|P3290R1}} (2024-07-12) | ||
Line 302: | Line 308: | ||
* Contracts - What are we doing here (EWG Presentation) - {{stddoc|P3343R0}} (2024-06-25) | * Contracts - What are we doing here (EWG Presentation) - {{stddoc|P3343R0}} (2024-06-25) | ||
* Virtual Functions on Contracts (EWG - Presentation for {{stddoc|P3097}}) - {{stddoc|P3344R0}} (2024-06-28) | * Virtual Functions on Contracts (EWG - Presentation for {{stddoc|P3097}}) - {{stddoc|P3344R0}} (2024-06-28) | ||
− | + | * Class invariants and contract checking philosophy - {{stddoc|P3361R1}} (2024-07-23) | |
+ | * Static analysis and “safety” of Contracts, {{stddoc|P2900}} vs {{stddoc|P2680}}/{{stddoc|P3285}} - {{stddoc|P3362R0}} (2024-08-13) | ||
{{cob}} | {{cob}} | ||
| | | | ||
Line 308: | Line 315: | ||
|2D Graphics | |2D Graphics | ||
|Early development. Draft {{stddoc|p0267r10}} (2019-10-07). | |Early development. Draft {{stddoc|p0267r10}} (2019-10-07). | ||
+ | | | ||
+ | |- | ||
+ | |Graph Library | ||
+ | |Early development. | ||
+ | {{cot|More proposals:}} | ||
+ | * Graph Library: Overview - {{stddoc|P3126R2}} (2024-08-05) | ||
+ | * Graph Library: Graph Container Interface - {{stddoc|P3130R2}} (2024-08-05) | ||
+ | * Graph Library: Graph Containers - {{stddoc|P3131R2}} (2024-08-05) | ||
+ | {{cob}} | ||
| | | | ||
|} | |} |
Revision as of 11:12, 21 August 2024
The C++ standards committee publishes experimental C++ language and library extensions for future standardization.
Note: until 2012, these publications used the TR (technical report) format. Since 2012 ISO procedure changed to use the TS (technical specification) format.
Contents |
TR/TS specifications
ISO number | Name | Status | Links, headers |
---|---|---|---|
ISO/IEC TR 18015:2006 | Technical Report on C++ Performance | Published 2006 (ISO store).
Draft: TR18015 (2006-02-15). |
|
ISO/IEC TR 19768:2007 | Technical Report on C++ Library Extensions | Published 2007-11-15 (ISO store).
Draft: N1836 (2005-06-24) |
|
ISO/IEC 29124:2010 | Extensions to the C++ Library to support mathematical special functions | Published 2010-09-03 (ISO Store).
Final draft: N3060 (2010-03-06). |
Special functions |
ISO/IEC TR 24733:2011 | Extensions for the programming language C++ to support decimal floating-point arithmetic | Published 2011-10-25 (ISO Store)
Draft: N2849 (2009-03-06). |
|
ISO/IEC TS 18822:2015 | C++ File System Technical Specification | Published 2015-06-18 (ISO store). Final draft: N4100 (2014-07-04). |
Filesystem, <filesystem> |
ISO/IEC TS 19570:2015 | C++ Extensions for Parallelism | Published 2015-06-24. (ISO Store). Final draft: N4507 (2015-05-05). ✔Merged into C++17. |
Parallelism |
ISO/IEC TS 19841:2015 | Transactional Memory TS | Published 2015-09-16, (ISO Store). Final draft: N4514 (2015-05-08). | Transactional memory |
ISO/IEC TS 19568:2015 | C++ Extensions for Library Fundamentals | Published 2015-09-30, (ISO Store). Final draft: N4480 (2015-04-07). ✔Merged into C++17 except for invocation traits. |
Library extensions |
ISO/IEC TS 19217:2015 | C++ Extensions for Concepts | Published 2015-11-13 (ISO Store). Final draft: N4553 (2015-10-02). Current draft: P0734R0 (2017-07-14). ✔Merged into C++20 (with modifications). |
Constraints and concepts, <concepts> |
ISO/IEC TS 19571:2016 | C++ Extensions for Concurrency | Published 2016-01-19 (ISO Store). Final draft: P0159R0 (2015-10-22). ✔Partially merged into C++20. |
Concurrency |
ISO/IEC TS 19568:2017 | C++ Extensions for Library Fundamentals, Version 2 | Published 2017-03-30 (ISO Store). Draft: N4617 (2016-11-28). ✔Partially merged into C++17 and C++20. |
Library extensions 2 |
ISO/IEC TS 21425:2017 | Ranges TS | Published 2017-12-05 (ISO Store). Draft: N4685 (2017-07-31). |
Ranges, <ranges> |
ISO/IEC TS 22277:2017 | Coroutines TS | Published 2017-12-05 (ISO Store). Draft: N4736 (2018-03-31). Latest draft: N4775 (2018-10-07). |
<coroutine> |
ISO/IEC TS 19216:2018 | Networking TS | Published 2018-04-24 (ISO Store). Draft: N4734 (2017-04-04). Latest draft: N4771 (2018-10-08). | Networking |
ISO/IEC TS 21544:2018 | Modules TS | Published 2018-05-16 (ISO Store). Final Draft: N4720 (2018-01-29). |
|
ISO/IEC TS 19570:2018 | Parallelism TS Version 2 | Published 2018-11-15 (ISO Store). Final draft: N4793 (2018-11-26). Post-publication draft: N4808 (2019-03-11). See also non-TS std::simd proposals below.
|
Parallelism 2 |
ISO/IEC TS 23619:2021 | Reflection TS | Published 2021-10-11 (ISO store). Draft: N4856 (2020-03-02). See also non-TS proposals below. | Reflection |
Numerics | Early development. Draft: P1889R1 (2019-12-27). | ||
ISO/IEC DTS 9922 | Concurrency TS Version 2 | Early development. Draft: N4956 (2023-07-05). | Concurrency 2 |
ISO/IEC DTS 19568 | C++ Extensions for Library Fundamentals, Version 3 | Early development. Draft: N4948 (2023-05-08). | Library extensions 3 |
ISO/IEC DTS 12907 | Transactional Memory TS, Version 2 | Early development. Draft: N4923 (2022-10-14). | |
ISO/IEC NP 19569 | Array Extensions TS | × Withdrawn. Abandoned draft: N3820 (2013-10-10). |
Non-TS proposals
Name | Status | Links, Headers | ||
---|---|---|---|---|
Linear Algebra | ✔Merged into C++26. Proposal: P1673R13 (2023-11-10).
|
<linalg> | ||
std::execution | Forwarded to LWG, wording in progress. ✔Merged into C++26. Proposal: P2300R10 (2024-06-28).
|
Execution, <execution> | ||
std::inplace_vector | ✔Merged into C++26. Proposal: P0843R14 (2024-06-26). | <inplace_vector> | ||
Pattern Matching | Early development. Draft P1371R3 (2020-09-15).
|
|||
Reflection | The main document (ISO/IEC TS 23619:2021) is described in Reflection TS above.
|
Reflection | ||
std::simd
|
The main document (TS ISO/IEC 19570:2018) is described in "C++ Extensions for Parallelism V2" above.
|
Data parallel types | ||
Contracts | Early development. Proposal P2659R2 (2022-11-30). Draft P2660R0 (2022-10-14).
|
|||
2D Graphics | Early development. Draft P0267R10 (2019-10-07). | |||
Graph Library | Early development. |
See also
C documentation for Experimental C features
|
External links
1. | PL22.16/WG21 document list - All C++ committee documents (TS/proposals) for 2016-2024. |
2. | JTC1/SC22/WG21 Proposals (mailing) for 2024. |