› P3104R4
Bit permutations
Jan Schultke
J. Schultke
2025-06-28
2025-07
Doc Date
2025-06-28
Abstract
Add bit permutation functions to the bit manipulation library.
› P3642R2
Carry-less product: std::clmul
Jan Schultke
J. Schultke
2025-07-02
2025-07
Doc Date
2025-07-02
Abstract
Add widening and non-widening carry-less multiplication functions.
› P3647R0
Slides for P3642R1
Jan Schultke
J. Schultke
2025-06-19
2025-07
Doc Date
2025-06-19
Abstract
**Intuition**: "carry-less" means we use XOR instead of plus.
› P3688R1
ASCII character utilities
Jan Schultke
J. Schultke
,
Corentin Jabot
C. Jabot
2025-06-28
2025-07
Doc Date
2025-06-28
Abstract
The utilities in `<cctype>` or `<locale>` are locale-specific, not `constexpr`, and provide no support for Unicode character types. We propose lightweight, locale-independent alternatives.
› P3721R0
Slides for P3639R0
Jan Schultke
J. Schultke
2025-06-04
2025-07
Doc Date
2025-06-04
Abstract
C23 now has `_BitInt` type for N-bit integers (WG14 [[N2763]](https://open-std%2eorg/JTC1/SC22/WG14/www/docs/n2763%2epdf), [[N2775]](https://open-std%2eorg/JTC1/SC22/WG14/www/docs/n2775%2epdf)):
› P3722R0
Slides for P3568R1
Jan Schultke
J. Schultke
2025-05-27
2025-07
Doc Date
2025-05-27
Abstract
C2y now supports `break` and `continue` with a label (N3355):
› P3724R0
Integer division
Jan Schultke
J. Schultke
2025-06-06
2025-07
Doc Date
2025-06-06
Abstract
C++ currently only offers truncating integer division in the form of the `/` operator. I propose standard library functions for computing quotients and remainders with other rounding modes.
› P3730R0
Slides for P3104R3
Jan Schultke
J. Schultke
2025-06-04
2025-07
› P3733R0
More named universal character escapes
Jan Schultke
J. Schultke
2025-06-28
2025-07
Doc Date
2025-06-28
Abstract
C++23 permits the use of "correction", "control", and "alternate" aliases for character names, but not "figment" or "abbreviation". Following P2736R2, this restriction is no longer necessary because "figment" and "abbreviation" are normatively specified in the Unicode standard.
› P3734R0
Not all predicates must be regular
Jan Schultke
J. Schultke
2025-06-14
2025-07
Doc Date
2025-06-14
Abstract
Some algorithms, such as `std::remove_if` and `std::copy_if` are over-constrained by requiring the predicate to be regular, despite the predicate visiting elements exactly once, making the requirement meaningless. These constraints should be relaxed.
› P3735R0
partial_sort_n, nth_element_n
Jan Schultke
J. Schultke
2025-06-28
2025-07
Doc Date
2025-06-28
Abstract
The `partial_sort`, and `nth_element` algorithms require the user to "manually offset" iterators, which is neither ergonomic nor safe. I propose `_n` variants of these algorithms in the style of `shift_left`.
› P3736R0
Slides against P2971R3 - No implication for C++
Jan Schultke
J. Schultke
2025-06-27
2025-07
› P3737R0
std::array is a wrapper for an array!
Jan Schultke
J. Schultke
2025-06-11
2025-07
Doc Date
2025-06-11
Abstract
The `std::array` class template is implemented as a simple wrapper type for a "C-style array". However, its specification in the standard is considerably more permissive and should be simplified.
› P3740R1
Last chance to fix std::nontype
Jan Schultke
J. Schultke
,
Bronek Kozicki
B. Kozicki
2025-06-20
2025-07
Doc Date
2025-06-20
Abstract
P2472R3 introduced overloads for the `std::function_ref` constructor which utilize a helper type `std::nontype`. This helper type may be obsoleted by other active proposals, and its name has become a bad choice now that C++26 no longer replaced the term "non-type template parameter", with "constant template parameter".
› P3749R0
Slides in response to P3655R2 - Concerns regarding std::zstring_view
Jan Schultke
J. Schultke
2025-06-27
2025-07
› P3753R1
Slides for P3740R1 - Last chance to fix std::nontype
Jan Schultke
J. Schultke
2025-06-20
2025-07
Doc Date
2025-06-20
Abstract
- P2472R3 added `std::nontype` constructors for `std::function_ref` - merged into P0792R14, plenary-approved Varna 2023 for C++26 - `std::nontype` possibly obsoleted by `std::constant_wrapper` (P2781R9) - Wording review completed by LWG - "non-type template parameter" term was removed by P2841R1 (C++26)
› P3764R0
A utility function for propagating the most significant bit
Jan Schultke
J. Schultke
2025-07-15
2025-07
Doc Date
2025-07-15
Abstract
Add a function to the `<bit>` header which converts the most significant bit to a bit mask.
› P3765R0
Deprecate implicit conversion from bool to character types
Jan Schultke
J. Schultke
,
Hana Dusíková
H. Dusíková
2025-07-12
2025-07
Doc Date
2025-07-12
Abstract
Implicit conversion from `bool` to character types serve little purpose in the language, and invite bugs. We propose to deprecate them.
› P3772R0
std::simd overloads for bit permutations
Jan Schultke
J. Schultke
2025-06-28
2025-07
Doc Date
2025-06-28
Abstract
[[P3104R3]](https://wg21%2elink/p3104r3) has been been design-approved by LEWG for C++29. This proposal adds `std::simd` overloads to add consistency with [[P2933R4]](https://wg21%2elink/p2933r4).
› P3774R0
Rename std::nontype, and make it broadly useful
Jan Schultke
J. Schultke
,
Bronek Kozicki
B. Kozicki
,
Tomasz Kamiński
T. Kamiński
2025-07-15
2025-07
Doc Date
2025-07-15
Abstract
[[P3740R1]](https://isocpp%2eorg/files/papers/P3740R1%2ehtml) proposed to rename `std::nontype` to `std::constant_arg`, now that the term "non-type template parameter" no longer exists in the C++26 standard. This solution found weak consensus in LEWG, but there was no time in LWG to review the change, so it did not make it into C++26.
› P3793R0
Better shifting
Brian Bi
B. Bi
,
Jan Schultke
J. Schultke
2025-07-15
2025-07
Doc Date
2025-07-15
Abstract
We propose the addition of functions to the `<bit>` header to perform bit shifts on integer operands. The `std::shl` and `std::shr` functions provide the following advantages over the built-in shift operators: