December 2020

2020-12 mailing available

The 2020-12 mailing of new standards papers is now available.


WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
N4878 Working Draft, Standard for Programming Language C++ Thomas Köppe 2020-12-15 2020-12   All of WG21
N4879 Editors' Report - Programming Languages - C++ Thomas Köppe 2020-12-15 2020-12   All of WG21
P0401R5 Providing size feedback in the Allocator interface Chris Kennelly 2020-12-14 2020-12 P0401R4 LWG Library
P0561R5 An RAII Interface for Deferred Reclamation Geoffrey Romer 2020-12-15 2020-12 P0561R4 LWG Library
P0849R6 auto(x): decay-copy in the language Zhihao Yuan 2020-12-15 2020-12 P0849R5 LEWG Library Evolution,CWG Core,LWG Library
P0901R8 Size feedback in operator new Chris Kennelly 2020-12-14 2020-12 P0901R7 CWG Core
P1030R4 std::filesystem::path_view Niall Douglas 2020-12-15 2020-12 P1030R3 LEWG Library Evolution
P1072R6 basic_string::resize_and_overwrite Chris Kennelly 2020-12-14 2020-12 P1072R5 LEWG Library Evolution,LWG Library
P1102R2 Down with ()! Alex Christensen 2020-12-15 2020-12 P1102R1 CWG Core
P1315R6 secure_clear (update to N2599) Miguel Ojeda 2020-12-18 2020-12 P1315R5 LEWG Library Evolution,LWG Library
P1478R6 Byte-wise atomic memcpy Hans Boehm 2020-12-14 2020-12 P1478R5 LEWG Library Evolution
P1642R5 Freestanding Library: Easy [utilities], [ranges], and [iterators] Ben Craig 2020-12-10 2020-12 P1642R4 LEWG Library Evolution
P1689R3 Format for describing dependencies of source files Ben Boeckel 2020-12-09 2020-12 P1689R2 SG15 Tooling,SG16 Unicode,EWG Evolution
P2077R2 Heterogeneous erasure overloads for associative containers Konstantin Boyarinov 2020-12-15 2020-12 P2077R1 LEWG Library Evolution
P2136R2 invoke_r Zhihao Yuan 2020-12-05 2020-12 P2136R1 LWG Library
P2175R0 Composable cancellation for sender-based async operations Lewis Baker 2020-12-15 2020-12   SG1 Concurrency and Parallelism
P2186R1 Removing Garbage Collection Support JF Bastien 2020-12-14 2020-12 P2186R0 CWG Core,LWG Library
P2195R1 Electronic Straw Polls Bryce Adelstein Lelbach 2020-11-22 2020-12 P2195R0 All of WG21
P2213R1 Executors Naming Amir Kirsh 2020-12-15 2020-12 P2213R0 SG1 Concurrency and Parallelism
P2216R1 std::format improvements Victor Zverovich 2020-11-25 2020-12 P2216R0 LEWG Library Evolution
P2233R3 2020 Fall Library Evolution Polls Bryce Adelstein Lelbach 2020-11-22 2020-12 P2233R2 LEWG Library Evolution
P2238R0 Core Language Working Group "tentatively ready" issues for the November, 2020 meeting William M. (Mike) Miller 2020-11-28 2020-12   All of WG21
P2247R1 2020 Library Evolution Report Bryce Adelstein Lelbach 2020-12-03 2020-12 P2247R0 LEWG Library Evolution
P2248R1 Enabling list-initialization for algorithms Giuseppe D'Angelo 2020-11-26 2020-12 P2248R0 LEWGI SG18: LEWG Incubator
P2262R0 2020 Fall Library Evolution Poll Outcomes Bryce Adelstein Lelbach 2020-12-02 2020-12   LEWG Library Evolution
P2263R0 A call for a WG21 managed chat service Tom Honermann 2020-12-14 2020-12   All of WG21
P2264R0 Make assert() macro user friendly for C and C++ Peter Sommerlad 2020-12-16 2020-12   LEWGI SG18: LEWG Incubator,SG22 Compatability,LEWG Library Evolution
P2265R0 Renaming any_invocable Kevlin Henney 2020-12-06 2020-12   LEWG Library Evolution
P2268R0 Freestanding Roadmap Ben Craig 2020-12-10 2020-12   SG14 Low Latency
P2272R0 Safety & Security Review Board Matthew Butler 2020-12-15 2020-12   SG12 Undefined and Unspecified Behavior,SG14 Low Latency,EWG Evolution,LEWG Library Evolution,Direction Group
P2273R0 Making std::unique_ptr constexpr Andreas Fertig 2020-12-09 2020-12   LEWG Library Evolution
P2274R0 C and C++ Compatibility Study Group Aaron Ballman 2020-12-13 2020-12   SG22 Compatability

Writing a custom iterator in modern C++ -- Internal Pointers

An experimental Forward Iterator written from scratch to boost up hand-made containers.

Writing a custom iterator in modern C++

by Internal Pointers

From the article:

Iterators are one of the building blocks of the Standard Library containers, but they are also useful when you want to provide the ability to iterate over elements of a custom container that you wrote yourself. Adding iterators to your containers will make them compatible with the range-based for loops and the C++ Algorithms library: a collection of functions for searching, sorting, counting and manipulating containers, based on iterators.


VcPkg: The Open Source Cross-Platform Package Manager from Microsoft -- Richard Thomson

Utah C++ Programmers has released a video on vcpkg:

VcPkg: The Open Source Cross-Platform Package Manager from Microsoft

by Richard Thomson

From the video description:

Richard Thomson gives us an informal introduction to vcpkg on both Windows and Linux.

Here's what we want from a package manager:
- works identically across platforms
- integrates with existing builds
- easy to find packages
- easy to consume packages
- can use prebuilt binaries to save build time
- can use local private packages as easily as public packages
- works with continuous integration systems
- doesn't require languages other than C/C++

How well does vcpkg fit the bill?


SonarQube / SoanrCloud add C++17 rules -- Alexandre Gigleux

SonarSource has been working all year to improve C++ support. Recently we adjusted standard-specific rules to run only on code compiled to that standard. So C++98 rules will no longer raise issues on your C++17 code, and vice versa! 

C++ analyzer helps developers to write C++17 compliant code

by Alexandre Gigleux

From the article:

C++17 standard is out for a while now and supported by the C++ analyzer running on SonarCloud. We did an effort in the past years to fix false-positives/false-negatives related to the new constructs/features of C++17. That was great but not enough to help you be more familiar with the standard and take the best out of it.
This is why we are happy to introduce a first set of rules dedicated to C++17. With these rules, we hope you will take advantage of the new features of C++17 and write more reliable and maintainable C++17 code.

C++ analysis is available free for open source projects in SonarCloud, and in commercial editions of SonarQube.


PVS-Studio 7.11 Release: IAR Arm, Diagnostics, FREE-FREE-FREE-FREE

This is the press release of the New Year's version of the PVS-Studio 7.11 analyzer. Since the new version includes only a few enhancements, let's take this opportunity to recall the options for free PVS-Studio use.

PVS-Studio 7.11 Release: IAR Arm, Diagnostics, FREE-FREE-FREE-FREE

by Andrey Karpov

From the article:

Support of the IAR Arm compilers is now available in the pvs-studio-analyzer utility. This family of compilers was previously supported only in the CLMonitor.exe utility on Windows. Now users of PVS-Studio for Linux can check the code written for these compilers as well. We added interception of compiler calls via ld-linux to the pvs-studio-analyzer utility.

std::any - comparison with void* and motivating examples -- Hitesh Kumar

An introduction to std::any and comparison with void*.

std::any - comparison with void* and motivating examples

by Hitesh Kumar

From the article:

std::any is often compared with void* because the latter has been the de-facto choice for storing or passing the arbitrary objects in C++ since the outset. std::any is not a replacement of void*, but it is a safer substitute for the boilerplate patterns built around void*. Nevertheless, a comparison between the two is required for a better understanding of std::any.

CopperSpice: C++ Memory Model

New video on the CopperSpice YouTube Channel:

C++ Memory Model

by Barbara Geller and Ansel Sermersheim

About the video:

In this video we examine the C++ memory model and explain why it is a completely separate component from the multi-threading library added in C++11. We also look at the development of the memory model and its purpose in the C++ standard.

Please take a look and remember to subscribe!