P3475R2 Deprecate `memory_order::consume`
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 11.1k
- Forks
- 1.7k
- Avg merge
- 4d 15h
- Merged PRs (30d)
- 22
Description
WG21-P3475R2 Deprecate memory_order::consume
This is a Core paper with Library impact, but the library changes don't depend on compiler changes.
No feature-test macro is mentioned.
Note that the outright removal of [[carries_dependency]] means that we should drop our macroization defenses in: https://github.com/microsoft/STL/blob/d43d49a3fdfa9d4fdbafd82dc517250b93269c94/stl/inc/xkeycheck.h#L538-L542
Note: We are not yet accepting PRs for C++26 features.
(Feature-specific note: we should be able to accept a PR for this before accepting C++26 PRs generally. However, unlike C++26 papers that we've implemented unconditionally, this deprecation will actually need to be guarded by _HAS_CXX26. I updated the compiler and VCRuntime so we can distinguish C++23 from C++26, but still need to update the test matrices, which is a headache/distraction. The matrices need enough attention that I would prefer to tackle them personally.)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the macroization defenses in stl/inc/xkeycheck.h at the referenced lines, then review the compiler and VCRuntime changes that distinguish C++23 from C++26. The work is done when memory_order::consume and [[carries_dependency]] reflect P3475R2 under _HAS_CXX26 and the affected test matrices are updated.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100