Contracts (P2900R14) were voted into the C++26 CD. This paper raises concerns about the design. KrzemieĊski - who has been deeply involved in the contracts design for years - questions whether implementation experience with GCC and Clang library rewrites is sufficient, and...
Proposes std::bit_cast_as<T>(simd_vec) for reinterpreting simd objects at different element granularities. Instead of std::bit_cast<vec<uint16_t, 8>>(bytes) with manually computed element counts, you write std::bit_cast_as<uint16_t>(bytes) and the count is inferred...
Proposes std::rebind<NewT>(container) - a generalized facility for converting containers and other types to use a different element type while preserving structure. std::rebind<double>(std::array<float, 4>) yields std::array<double, 4>. Works uniformly across array, vector...
Addresses four NB comments about how std::execution::task uses allocators. The key separation: the allocator for the coroutine frame and the allocator for child sender environments should be handled independently. The frame allocator comes from the task's constructor arguments...
When you bit_cast a type with padding bits (like 80-bit long double) to a type without padding (like __int128), the padding bits map onto value bits in the destination. Those padding bits have indeterminate values. The result: std::bit_cast becomes an alternative spelling for...
Someone finally cataloged all of it. Two new Annexes to the C++ standard: one listing every instance of undefined behavior, one listing every instance of ill-formed, no diagnostic required (IFNDR). Developed as a collaborative branch of the working draft, now ready for CWG...
Minor revision - improved wording based on Barry Revzin's feedback. The trait name was also updated from is_structural_type_v to is_structural_v for consistency with other type traits (e.g. is_const_v, not is_const_type_v). Same proposal, cleaner spec text.
Resolves French NB comment FR-030-310. atomic_ref::address() currently returns T*, which makes it too easy to accidentally access the object non-atomically while live atomic_refs exist. The fix: return void* instead. You can still hash, compare, and index with it, but accessing...
CWG cannot agree on whether floating-point overflow is undefined behavior. Is FLT_MAX * 2 UB? Is infinity() + 1 UB? Is merely yielding infinity UB? Extensive CWG discussion found no consensus on what the current wording says. This paper proposes to clarify: overflow on IEEE 754...
Proposes splitting the standard into three fixed modules: std.core (non-excludable low-level primitives), std.modern (safe modern library), and std.legacy (C compatibility pitfalls like array decay, C-style casts, implicit narrowing). Users opt into "clean mode" with exclude...
Addresses US NB comment 49. The standard uses "structural type" in several places (NTTPs, std::array) and library mandates require it, but there's no way to query whether a type is structural. This paper adds is_structural_type(info) as a reflection metafunction and...
Directions Group statement on safety profiles. The paper argues that SG23 and EWG have repeatedly pointed to Profiles as the direction, but the committee faces "a stream of uncoordinated proposals" not aligned with the framework. Calls on implementers to coordinate on framework...
Seven revisions in, the quantities and units library continues its march toward C++29. This is the standardization path for the mp-units design: compile-time-safe physical quantities with dimensions, units, quantity kinds, affine spaces, and formatted text output, all grounded...
R4 splits the [simd.math] respecification out from the consteval broadcast constructor work in R3. The title changed from "Restore simd::vec broadcast from int" to "Reword [simd.math] for consteval conversions" to reflect the narrower scope. Fixes incorrectly removed...
We all teach that std::array is just a wrapper for a C-style array. But the standard doesn't actually say that. The spec is permissive enough that a compliant implementation could add extra members, break trivial copyability, or inflate the size. This paper makes the simplified...