August 2023

C++23: static operator() and static operator[] -- Sandor Dargo

sandordargo.jpgIn this article, we are going to review two new features of C++23. Now the language allows the call operator (operator()) and the subscription operator (operator[]) to be static.

C++23: static operator() and static operator[]

By Sandor Dargo

From the article:

static operator()

As we saw earlier in our big C++ algorithms tutorial, function objects are extensively used in the standard library to customise the behaviour of several functions. With the introduction of ranges in C++20 (and of earlier non-standard libraries), the usage of function objects became even more widespread.

Many function objects are extremely simple. Let’s take an implementation of isEven.

auto isEven = [](int i) {return i % 2 == 0;};

2023-08 Mailing Available

The 2023-08 mailing of new standards papers is now available.

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
N4956 Concurrency TS2 PDTS Michael Wong 2023-08-15 2023-08   All of WG21
N4958 Working Draft, Programming Languages -- C++ Thomas Köppe 2023-08-14 2023-08   All of WG21
N4959 Editors' Report, Programming Languages -- C++ Thomas Köppe 2023-08-14 2023-08   All of WG21
N4960 Business Plan and Convener's Report: ISO/IEC JTC1/SC22/WG21 (C++) Herb Sutter 2023-08-09 2023-08   All of WG21
P0124R7 Linux-Kernel Memory Model Paul E. McKenney 2023-08-22 2023-08 P0124R6 SG1 Concurrency and Parallelism,SG5 Transactional Memory,SG14 Low Latency
P0124R8 Linux-Kernel Memory Model Paul E. McKenney 2023-08-22 2023-08 P0124R7 SG1 Concurrency and Parallelism,SG5 Transactional Memory,SG14 Low Latency
P0963R1 Structured binding declaration as a condition Zhihao Yuan 2023-08-14 2023-08 P0963R0 EWG Evolution
P1068R8 Vector API for random number generation Ilya Burylov 2023-08-08 2023-08 P1068R7 LEWG Library Evolution
P1967R11 #embed - a simple, scannable preprocessor-based resource acquisition method JeanHeyd Meneide 2023-08-21 2023-08 P1967R10 CWG Core
P2407R5 Freestanding Library: Partial Classes Ben Craig 2023-07-26 2023-08 P2407R4 LWG Library
P2521R5 Contract support -- Record of SG21 consensus Andrzej Krzemieński 2023-08-15 2023-08 P2521R4 SG21 Contracts
P2728R6 Unicode in the Library, Part 1: UTF Transcoding Zach Laine 2023-08-14 2023-08 P2728R5 SG16 Unicode,LEWG Library Evolution
P2746R3 Deprecate and Replace Fenv Rounding Modes Hans Boehm 2023-08-14 2023-08 P2746R2 SG6 Numerics,LEWG Library Evolution
P2795R3 Erroneous behaviour for uninitialized reads Thomas Köppe 2023-07-28 2023-08 P2795R2 SG12 Undefined and Unspecified Behavior,SG23 Safety and Security,EWG Evolution,CWG Core
P2821R4 span.at() Jarrad J. Waterloo 2023-07-26 2023-08 P2821R3 SG23 Safety and Security,LEWG Library Evolution
P2833R1 Freestanding Library: inout expected span Ben Craig 2023-08-19 2023-08 P2833R0 LEWG Library Evolution
P2845R2 Formatting of std::filesystem::path Victor Zverovich 2023-07-23 2023-08 P2845R1 SG16 Unicode,LEWG Library Evolution
P2863R1 Review Annex D for C++26 Alisdair Meredith 2023-08-16 2023-08 P2863R0 EWG Evolution,LEWG Library Evolution
P2864R1 Remove Deprecated Arithmetic Conversion on Enumerations From C++26 Alisdair Meredith 2023-08-16 2023-08 P2864R0 SG22 Compatability,EWG Evolution
P2865R2 Remove Deprecated Array Comparisons from C++26 Alisdair Meredith 2023-08-16 2023-08 P2865R1 SG22 Compatability,EWG Evolution
P2868R1 Remove Deprecated `std::allocator` Typedef From C++26 Alisdair Meredith 2023-08-15 2023-08 P2868R0 LEWG Library Evolution
P2869R1 Remove Deprecated `shared_ptr` Atomic Access APIs From C++26 Alisdair Meredith 2023-08-16 2023-08 P2869R0 LEWG Library Evolution
P2870R1 Remove `basic_string::reserve()` From C++26 Alisdair Meredith 2023-08-16 2023-08 P2870R0 LEWG Library Evolution
P2871R1 Remove Deprecated Unicode Conversion Facets From C++26 Alisdair Meredith 2023-08-08 2023-08 P2871R0 LEWG Library Evolution
P2875R1 Undeprecate `polymorphic_allocator::destroy` For C++26 Alisdair Meredith 2023-08-15 2023-08 P2875R0 LEWG Library Evolution
P2878R5 Reference checking Jarrad J. Waterloo 2023-08-10 2023-08 P2878R4 SG23 Safety and Security
P2885R1 Requirements for a Contracts syntax Timur Doumler 2023-08-15 2023-08 P2885R0 SG21 Contracts,EWG Evolution
P2890R0 Contracts on lambdas Timur Doumler 2023-08-17 2023-08   SG21 Contracts
P2894R0 Constant evaluation of Contracts Timur Doumler 2023-08-22 2023-08   SG21 Contracts
P2896R0 Outstanding design questions for the Contracts MVP Timur Doumler 2023-08-22 2023-08   SG21 Contracts
P2905R2 Runtime format strings Victor Zverovich 2023-07-23 2023-08 P2905R1 LWG Library
P2909R0 Dude, where's my char? Victor Zverovich 2023-08-13 2023-08   SG16 Unicode,LEWG Library Evolution
P2933R0 std::simd overloads for <bit> header Daniel Towner 2023-08-01 2023-08   SG1 Concurrency and Parallelism,LEWG Library Evolution
P2935R0 An Attribute-Like Syntax for Contracts Joshua Berne 2023-08-15 2023-08   SG21 Contracts
P2944R1 Comparisons for reference_wrapper Barry Revzin 2023-08-17 2023-08 P2944R0 LEWG Library Evolution
P2951R2 Shadowing is good for safety Jarrad J. Waterloo 2023-08-10 2023-08 P2951R1 SG23 Safety and Security
P2952R0 auto& operator=(X&&) = default Arthur O'Dwyer 2023-08-10 2023-08   EWGI SG17: EWG Incubator,EWG Evolution
P2953R0 Forbid defaulting operator=(X&&) && Arthur O'Dwyer 2023-08-10 2023-08   EWGI SG17: EWG Incubator,EWG Evolution
P2954R0 Contracts and virtual functions for the Contracts MVP Ville Voutilainen 2023-08-03 2023-08   SG21 Contracts
P2955R0 Safer Range Access Jarrad J. Waterloo 2023-08-10 2023-08   SG23 Safety and Security
P2956R0 Add saturating library support to std::simd Daniel Towner 2023-08-01 2023-08   SG1 Concurrency and Parallelism,LEWG Library Evolution
P2957R0 Contracts and coroutines Andrzej Krzemieński 2023-08-15 2023-08   SG21 Contracts
P2958R0 typeof and typeof_unqual JeanHeyd Meneide 2023-08-21 2023-08   EWG Evolution
P2960R0 Concurrency TS Editor's report for N4956 Michael Wong 2023-08-16 2023-08   All of WG21

CopperSpice: Template Parameters

New video on the CopperSpice YouTube Channel:

Template Parameters

by Barbara Geller and Ansel Sermersheim

About the video:

Do you know the precise difference between a parameter and an argument? Where can a default argument appear for a template parameter? We have some answers in our newest C++ video.

Please take a look and remember to subscribe.

Using GitHub Actions for Continuous Integration -- Richard Thomson

Utah C++ Programmers has released a new video:

Using GitHub Actions for Continuous Integration

by Richard Thomson

From the video description:

GitHub actions allow you to set up continuous integration for your C++ project. You can configure, build and test your code in a variety of operating systems and hardware configurations.

This month, Richard Thomson will give us an introduction to GitHub actions for continuous integration of C++ projects. We'll look at how to set up automatic building and testing of code on various repository events, such as commits, pull requests, and so-on.

Some of the topics we will cover are:

  • How to configure GitHub actions from scratch
  • How to use some continuous integration project templates
  • How to run tests
  • How to integrate custom build/test environments

https://www.youtube.com/watch?v=1q8BQtvr8sY

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/1q8BQtvr8sY" title="YouTube video player" width="560"></iframe>

 

C++23: Syntactic Sugar with Deducing This -- Rainer Grimm

syntacticsugar-grimm.pngThe Curiously Recurring Template Pattern (CRTP) is a heavily used idiom in C++. It is similarly resistant to understanding as the classic design pattern visitor I presented in my last post: “C++23: Deducing This“.  Thanks to deducing this, we can remove the C and R from the abbreviation.

C++23: Syntactic Sugar with Deducing This

By Rainer Grimm

From the article:

CRTP

The acronym CRTP stands for the C++ idiom Curiously Recurring Template Pattern and denotes a technique in C++ in which a class Derived is derived from a class template Base. The critical point is that Base has Derived as a template argument.

template <typename T>
class Base{
    ...
};

class Derived : public Base<Derived>{
    ...
};
CRTP is typically used to implement static polymorphism. Unlike dynamic polymorphism, static polymorphism happens at compile time and does not require an expensive run-time pointer indirection.

Introduction to Programming with C++ For Engineers, Book Review -- Bartlomiej Filipek

introprogramming-book.pngLots of practical examples, general programming, software development techniques, OOP, parallel algorithms, plus C++ to combine it all into working applications. This is a short introduction to the book “Introduction to Programming with C++” by Prof. Boguslaw Cyganek, an excellent book for students who start their journey with system coding.

Introduction to Programming with C++ For Engineers, Book Review

By Bartlomiej Filipek

From the review:

“I have been highly impressed by Introduction to Programming with C++ for Engineers and can’t recommend it enough. With its content designed keeping in mind the author’s own students, the book assumes no prior programming experience, making it an excellent choice for anyone who wishes to learn C++ as their first programming language. […]
The book extends its reach beyond just the programming language, shedding light on aspects such as microprocessor operations, software development processes, UML, and more. Furthermore, the appendices cover essential tools like CMake and Git, making this book a comprehensive guide for anyone delving into C++ programming. The detailed content, careful attention to detail, and clarity in explaining concepts have garnered much praise for the book. This makes it an invaluable resource for those aspiring to learn and understand modern C++ programming."

PVS-Studio 7.26: running analysis in VS Code and Qt Creator, integration with DefectDojo, and more

PVS-Studio 7.26 has been released. Now you can run the analysis in plugins for VS Code and Qt Creator; upload the analysis results to DefectDojo, and more. In this note, we'll take a closer look at these and other enhancements.

PVS-Studio 7.26: running analysis in VS Code and Qt Creator, integration with DefectDojo, and more

by Sergey Vasiliev

From the article:

Now the PVS-Studio plugins for Visual Studio Code and Qt Creator support the analysis of C and C++ projects. Moreover, the plugins support mass suppression of analyzer warnings (with the help of suppress files). This mechanism enables you to hide warnings for legacy code and work only with new warnings. In this way, the integration of the analyzer into the project will be much easier.

Let's Enumerate the UB -- Shafik Yaghmour

ShafikYaghmour.jpgSome time ago I started working on P1705 Enumerating Core Undefined Behavior, I have collected a large set of undefined behavior (UB) during that time. There is going to be a lot of work involved in getting the annex into shape and editing it into the standard. While this work is ongoing, I will take some time to write blog posts to explore the set of undefined behaviors.

Let's Enumerate the UB

By Shafik Yaghmour

From the article:

In these posts I will cover: why we have each undefined behavior, some consequences of running afoul of each UB and tools we can use to catch UB. My plan is to enumerate them in the order they appear in the standard.

IFNDR (What is that?)

Before we go on, let’s talk about a term we find in the standard, ill-formed no diagnostic required; also known as IFNDR. This is like undefined behavior in that the standard places no requirements on a program that contains IFNDR constructs, see [intro.compliance.general]p2.2 which says (emphasis mine):

If a program contains a violation of a rule for which no diagnostic is required, this document places no requirement on implementations with respect to that program.

compared to the defintion of undefined behavior which says:

behavior for which this document imposes no requirements

The main difference is that IFNDR is a static property of your code (it is a propety of the program).

C++23: Deducing This -- Rainer Grimm

grimm-deducingthis.pngAnyone who thinks a small C++ standard follows a significant C++ standard is wrong. C++23 provides powerful extensions to C++20. These extensions include the core language, particularly the standard library. Today, I present a small but very impactful feature of the core language: deducing this.

C++23: Deducing This

By Rainer Grimm

From the article:

Deducing this, sometimes also called explicit object parameter, allows it to make the implicit this pointer of a member function explicit. Like Python, the explicit object parameter must be the first function parameter and is called in C++, by convention, Self and self.
struct Test {

    void implicitParameter();               // implicit this pointer
    void explictParameter(this Self& self); // explicit this pointer
};
Deducing this enables new programming techniques in C++23: deduplication of function overloading based on the object’s lvalue/rvalue value category and constness. Additionally, you can reference a lambda and invoke it recursively. Furthermore, deducing this simplifies the implementation of CRTP

2023-07 Mailing Available

The 2023-07 mailing of new standards papers is now available.

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
N4955 WG21 2023-06 Admin telecon minutes Nina Ranns 2023-06-05 2023-07   All of WG21
N4957 WG21 June 2023 Varna Minutes of Meeting Nina Ranns 2023-06-28 2023-07   All of WG21
P0260R6 C++ Concurrent Queues Detlef Vollmann 2023-06-16 2023-07 P0260R5 SG1 Concurrency and Parallelism,LEWG Library Evolution
P0260R7 C++ Concurrent Queues Detlef Vollmann 2023-07-13 2023-07 P0260R6 SG1 Concurrency and Parallelism,LEWG Library Evolution
P0543R3 Saturation arithmetic Jens Maurer 2023-07-19 2023-07 P0543R2 LWG Library
P0843R7 inplace_vector Gonzalo Brito Gadeschi 2023-06-16 2023-07 P0843R6 LEWG Library Evolution
P0843R8 inplace_vector Gonzalo Brito Gadeschi 2023-06-16 2023-07 P0843R7 LEWG Library Evolution
P0901R11 Size feedback in operator new Thomas Köppe 2023-06-20 2023-07 P0901R10 EWG Evolution,CWG Core
P1030R6 std::filesystem::path_view Niall Douglas 2023-06-16 2023-07 P1030R5 LEWG Library Evolution
P1324R1 RE: Yet another approach for constrained declarations Mihail Naydenov 2023-07-06 2023-07 P1324R0 EWG Evolution
P1383R2 More constexpr for cmath and complex Oliver Rosten 2023-06-15 2023-07 P1383R1 SG6 Numerics,LEWG Library Evolution,LWG Library
P1729R2 Text Parsing Elias Kosunen 2023-07-07 2023-07 P1729R1 SG9 Ranges,SG16 Unicode,LEWG Library Evolution
P1928R5 std::simd - Merge data-parallel types from the Parallelism TS 2 Matthias Kretz 2023-06-19 2023-07 P1928R4 LEWG Library Evolution
P1928R6 std::simd - Merge data-parallel types from the Parallelism TS 2 Matthias Kretz 2023-06-19 2023-07 P1928R5 LEWG Library Evolution
P2169R4 A Nice Placeholder With No Name Corentin Jabot 2023-06-16 2023-07 P2169R3 CWG Core
P2407R4 Freestanding Library: Partial Classes Emil Meissner 2023-06-28 2023-07 P2407R3 LWG Library
P2487R1 Is attribute-like syntax adequate for contract annotations? Andrzej Krzemieński 2023-06-11 2023-07 P2487R0 SG21 Contracts
P2521R4 Contract support -- Record of SG21 consensus Andrzej Krzemieński 2023-06-15 2023-07 P2521R3 SG21 Contracts
P2542R3 views::concat Hui Xie 2023-06-09 2023-07 P2542R2 SG9 Ranges,LEWG Library Evolution
P2546R5 Debugging Support René Ferdinand Rivera Morell 2023-07-05 2023-07 P2546R4 LWG Library
P2548R6 copyable_function Michael Florian Hava 2023-06-15 2023-07 P2548R5 LWG Library
P2552R3 On the ignorability of standard attributes Timur Doumler 2023-06-14 2023-07 P2552R2 EWG Evolution,CWG Core
P2591R4 Concatenation of strings and string views Giuseppe D'Angelo 2023-07-11 2023-07 P2591R3 LEWG Library Evolution
P2630R4 Submdspan Christian Trott 2023-06-22 2023-07 P2630R3 LEWG Library Evolution,LWG Library
P2637R3 Member visit Barry Revzin 2023-06-14 2023-07 P2637R2 LEWG Library Evolution
P2641R4 Checking if a union alternative is active Barry Revzin 2023-06-14 2023-07 P2641R3 LEWG Library Evolution
P2642R3 Padded mdspan layouts Mark Hoemmen 2023-07-14 2023-07 P2642R2 LEWG Library Evolution
P2662R2 Pack Indexing Corentin Jabot 2023-07-15 2023-07 P2662R1 EWG Evolution
P2689R2 atomic_accessor Christian Trott 2023-07-20 2023-07 P2689R1 SG1 Concurrency and Parallelism,LEWG Library Evolution
P2697R1 Interfacing bitset with string_view Michael Florian Hava 2023-06-15 2023-07 P2697R0 LWG Library
P2714R1 Bind front and back to NTTP callables Zhihao Yuan 2023-06-16 2023-07 P2714R0 LWG Library
P2717R2 Tool Introspection René Ferdinand Rivera Morell 2023-06-15 2023-07 P2717R1 SG15 Tooling
P2727R3 std::iterator_interface Zach Laine 2023-06-13 2023-07 P2727R2 LEWG Library Evolution
P2728R4 Unicode in the Library, Part 1: UTF Transcoding Zach Laine 2023-06-19 2023-07 P2728R3 SG16 Unicode,LEWG Library Evolution
P2728R5 Unicode in the Library, Part 1: UTF Transcoding Zach Laine 2023-07-11 2023-07 P2728R4 SG16 Unicode,LEWG Library Evolution
P2741R3 user-generated static_assert messages Corentin Jabot 2023-06-16 2023-07 P2741R2 EWG Evolution
P2752R3 Static storage for braced initializers Arthur O'Dwyer 2023-06-14 2023-07 P2752R2 CWG Core
P2757R3 Type checking format args Barry Revzin 2023-06-14 2023-07 P2757R2 LEWG Library Evolution
P2767R1 flat_map/flat_set omnibus Arthur O'Dwyer 2023-07-14 2023-07 P2767R0 LEWG Library Evolution,LWG Library
P2776R0 2023-05 Library Evolution Poll Outcomes Bryce Adelstein Lelbach 2023-06-16 2023-07   LEWG Library Evolution
P2779R1 Make basic_string_view's range construction conditionally explicit Giuseppe D'Angelo 2023-07-11 2023-07 P2779R0 SG9 Ranges,SG16 Unicode,LEWG Library Evolution
P2781R3 std::constexpr_v Zach Laine 2023-06-12 2023-07 P2781R2 LEWG Library Evolution
P2785R0 Relocating prvalues Sébastien Bini, Ed Catmur 2023-06-12 2023-07   EWGI SG17: EWG Incubator,LEWGI SG18: LEWG Incubator,SG23 Safety and Security
P2785R1 Relocating prvalues Sébastien Bini, Ed Catmur 2023-06-12 2023-07 P2785R0 EWGI SG17: EWG Incubator,LEWGI SG18: LEWG Incubator,SG23 Safety and Security
P2785R2 Relocating prvalues Sébastien Bini, Ed Catmur 2023-06-14 2023-07 P2785R1 EWGI SG17: EWG Incubator,LEWGI SG18: LEWG Incubator,SG23 Safety and Security
P2785R3 Relocating prvalues Sébastien Bini, Ed Catmur 2023-06-14 2023-07 P2785R2 EWGI SG17: EWG Incubator
P2786R2 Trivial relocatability options Mungo Gill 2023-06-16 2023-07 P2786R1 EWG Evolution
P2795R0 Correct and incorrect code, and "erroneous behaviour" Thomas Köppe 2023-06-13 2023-07   SG12 Undefined and Unspecified Behavior,SG23 Safety and Security,EWG Evolution,CWG Core
P2795R1 Erroneous behaviour for uninitialized reads Thomas Köppe 2023-06-15 2023-07 P2795R0 SG12 Undefined and Unspecified Behavior,SG23 Safety and Security,EWG Evolution,CWG Core
P2795R2 Erroneous behaviour for uninitialized reads Thomas Köppe 2023-06-16 2023-07 P2795R1 SG12 Undefined and Unspecified Behavior,SG23 Safety and Security,EWG Evolution,CWG Core
P2809R1 Trivial infinite loops are not Undefined Behavior JF Bastien 2023-06-17 2023-07 P2809R0 SG1 Concurrency and Parallelism,SG22 Compatability,EWG Evolution,LEWG Library Evolution
P2810R1 is_debugger_present is_replaceable René Ferdinand Rivera Morell 2023-07-06 2023-07 P2810R0 LEWG Library Evolution
P2811R5 Contract-Violation Handlers Joshua Berne 2023-06-28 2023-07 P2811R4 SG21 Contracts
P2811R6 Contract-Violation Handlers Joshua Berne 2023-06-28 2023-07 P2811R5 SG21 Contracts
P2811R7 Contract-Violation Handlers Joshua Berne 2023-07-13 2023-07 P2811R6 SG21 Contracts
P2814R1 Trivial Relocatability --- Comparing P1144 with P2786 Mungo Gill 2023-06-16 2023-07 P2814R0 EWG Evolution
P2819R1 Add tuple protocol to complex Michael Florian Hava 2023-07-14 2023-07 P2819R0 LEWG Library Evolution,LWG Library
P2821R2 span.at() Jarrad J. Waterloo 2023-05-26 2023-07 P2821R1 SG23 Safety and Security,LEWG Library Evolution
P2821R3 span.at() Jarrad J. Waterloo 2023-06-12 2023-07 P2821R2 SG23 Safety and Security,LEWG Library Evolution
P2828R2 Copy elision for direct-initialization with a conversion function (Core issue 2327) Brian Bi 2023-06-12 2023-07 P2828R1 CWG Core
P2834R1 Semantic Stability Across Contract-Checking Build Modes Joshua Berne, John Lakos 2023-06-08 2023-07 P2834R0 SG21 Contracts
P2835R1 Expose std::atomic_ref's object address Gonzalo Brito Gadeschi 2023-06-26 2023-07 P2835R0 LEWG Library Evolution
P2836R1 std::basic_const_iterator should follow its underlying type's convertibility Christopher Di Bella 2023-07-11 2023-07 P2836R0 SG9 Ranges,LEWG Library Evolution,LWG Library
P2845R1 Formatting of std::filesystem::path Victor Zverovich 2023-06-08 2023-07 P2845R0 SG16 Unicode,LEWG Library Evolution
P2865R1 Remove Deprecated Array Comparisons from C++26 Alisdair Meredith 2023-06-16 2023-07 P2865R0 SG22 Compatability,EWG Evolution
P2872R1 Remove `wstring_convert` From C++26 Alisdair Meredith 2023-06-07 2023-07 P2872R0 LEWG Library Evolution
P2874R1 Mandating Annex D Alisdair Meredith 2023-06-11 2023-07 P2874R0 LWG Library
P2874R2 Mandating Annex D Alisdair Meredith 2023-06-12 2023-07 P2874R1 LWG Library
P2877R0 Contract Build Modes and Semantics Joshua Berne 2023-07-13 2023-07   SG21 Contracts
P2878R2 Reference checking Jarrad J. Waterloo 2023-06-10 2023-07 P2878R1 SG23 Safety and Security
P2878R3 Reference checking Jarrad J. Waterloo 2023-06-23 2023-07 P2878R2 SG23 Safety and Security
P2878R4 Reference checking Jarrad J. Waterloo 2023-07-08 2023-07 P2878R3 SG23 Safety and Security
P2885R0 Requirements for a Contracts syntax Timur Doumler 2023-07-16 2023-07   SG21 Contracts,EWG Evolution
P2898R1 Build System Requirements for Importable Headers Daniel Ruoso 2023-06-12 2023-07 P2898R0 SG15 Tooling
P2902R0 constexpr 'Parallel' Algorithms Oliver Rosten 2023-06-17 2023-07   LEWG Library Evolution,LWG Library
P2904R0 Removing exception in precedence rule(s) when using member pointer syntax Annop Rana 2023-06-13 2023-07   EWGI SG17: EWG Incubator
P2905R0 Runtime format strings Victor Zverovich 2023-07-15 2023-07   LEWG Library Evolution
P2905R1 Runtime format strings Victor Zverovich 2023-07-15 2023-07 P2905R0 LWG Library
P2906R0 Structured bindings for std::extents Bernhard Manfred Gruber 2023-05-29 2023-07   LEWG Library Evolution
P2910R0 C++ Standard Library Ready Issues to be moved in Varna, Jun. 2023 Jonathan Wakely 2023-06-09 2023-07   All of WG21
P2911R0 Python Bindings with Value-Based Reflection Adam Lach 2023-07-10 2023-07   SG7 Reflection
P2912R0 Concurrent queues and sender/receivers Gor Nishanov 2023-07-04 2023-07   SG1 Concurrency and Parallelism
P2915R0 Proposed resolution to CWG1223 Corentin Jabot 2023-06-13 2023-07   CWG Core
P2917R0 An in-line defaulted destructor should keep the copy- and move-operations Andreas Fertig 2023-06-14 2023-07   EWGI SG17: EWG Incubator,EWG Evolution
P2917R1 An in-line defaulted destructor should keep the copy- and move-operations Andreas Fertig 2023-07-05 2023-07 P2917R0 EWG Evolution
P2918R0 Runtime format strings II Victor Zverovich 2023-07-15 2023-07   LEWG Library Evolution
P2918R1 Runtime format strings II Victor Zverovich 2023-07-15 2023-07 P2918R0 LWG Library
P2920R0 Library Evolution Leadership's Understanding of the Noexcept Policy History Nevin Liber 2023-06-16 2023-07   All of WG21
P2921R0 Exploring std::expected based API alternatives for buffer_queue Gor Nishanov 2023-07-04 2023-07   LEWG Library Evolution
P2922R0 Core Language Working Group "ready" Issues for the June, 2023 meeting Jens Maurer 2023-06-16 2023-07   CWG Core
P2925R0 inplace_vector - D0843R7 LEWG presentation David Sankel 2023-06-19 2023-07   LEWG Library Evolution
P2926R0 std::simd types should be regular - P2892R0 LEWG presentation David Sankel 2023-06-19 2023-07   LEWG Library Evolution
P2929R0 simd_invoke Daniel Towner 2023-07-19 2023-07   LEWG Library Evolution
P2930R0 Formatter specializations for the standard library Mark de Wever 2023-07-15 2023-07   LEWG Library Evolution,LWG Library
P2931R0 WG21 June 2023 Varna Meeting Record of Discussion Nina Ranns 2023-06-28 2023-07   All of WG21
P2937R0 Freestanding: Remove strtok Ben Craig 2023-07-02 2023-07   LEWG Library Evolution
P2940R0 switch for Pattern Matching Mihail Naydenov 2023-07-06 2023-07   EWGI SG17: EWG Incubator
P2941R0 Identifiers for Pattern Matching Mihail Naydenov 2023-07-06 2023-07   EWGI SG17: EWG Incubator
P2944R0 Comparisons for reference_wrapper Barry Revzin 2023-07-09 2023-07   LEWG Library Evolution
P2945R0 Additional format specifiers for time_point Barry Revzin 2023-07-13 2023-07   LEWG Library Evolution
P2946R0 A flexible solution to the problems of `noexcept` Pablo Halpern 2023-07-19 2023-07   EWGI SG17: EWG Incubator
P2947R0 Contracts must avoid disclosing sensitive information Andrei Zissu 2023-07-20 2023-07   SG21 Contracts,SG23 Safety and Security
P2949R0 Slides for P2861R0: Narrow Contracts and `noexcept` are Inherently Incompatable John Lakos 2023-07-14 2023-07   EWGI SG17: EWG Incubator,SG21 Contracts,EWG Evolution,LEWG Library Evolution
P2950R0 Slides for P2836R1: std::basic_const_iterator should follow its underlying type's convertibility Tomasz Kamiński 2023-07-11 2023-07   LEWG Library Evolution
P2951R0 Shadowing is good for safety Jarrad J. Waterloo 2023-07-14 2023-07   EWGI SG17: EWG Incubator,LEWGI SG18: LEWG Incubator,SG23 Safety and Security
P2951R1 Shadowing is good for safety Jarrad J. Waterloo 2023-07-16 2023-07 P2951R0 SG23 Safety and Security