microsoft / microsoft/STL

P3475R2 Deprecate `memory_order::consume`

Open
#5,287 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

cxx26
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.