March 2020

Kafka’s uncle spends a week with Les Booloise: Prague trip report--Guy Davidson

Another point of view.

Kafka’s uncle spends a week with Les Booloise: Prague trip report

by Guy Davidson

From the article:

I love Czechia and I love Prague. I have visited a few times: most recently to give a talk at the Avast meetup last February, organised by Hana Dusíková, who also organised this WG21 meeting. She did an absolutely outstanding job, and I know that I share that opinion with many committee folk.

Of course, this was the meeting that C++20 was due to be signed off by WG21 and sent for polling by the National Bodies (NB) before going to ISO for publication. Plenty of time was spent on attending to outstanding NB comments but there was still scope for reviewing new proposals.

On top of that, there was a social event on Wednesday evening to celebrate the release, which took place at Pražská Křižovatka. The whole week was as tiring as ever, but I was delighted to be there, to make “the team photo” and to advance some of my work. If you are interested in a detailed report of the work completed you can find one on reddit: I am going to discuss my work and experiences...

Requires-clause--Andrzej Krzemieński

Learn about the close future.


by Andrzej Krzemieński

From the article:

In this post we will talk about another C++20 feature related to constraining templates: requires-clause. Although C++20 is due to be published this year, it is not there yet; so we are talking about the future. However, this can already be tested in trunk versions of GCC and Clang online in Compiler Explorer...

Conan integration in GitLab

gitlab-logo-gray-rgb.pngConan, the C and C++ package manager, is now part of GitLab

Conan users can now set GitLab as the remote registry for their packages

From the article:

This allows users to share private packages within an organization that is already using GitLab, publish public packages for general or open source use, and will open up many possibilities in utilizing GitLab’s CI pipelines to build and consume these packages automatically.

LLVM/Clang 10.0.0 is released!

Full of novelty.

LLVM/Clang 10.0.0 is released!

From the article:

Some highlights include:

  • C++ Concepts support in Clang
  • Clang no longer runs in a separate process by default ("in-process cc1")
  • Windows control flow guard (CFG) checks
  • Support for more processor cores and features

C++20: Coroutines - A First Overview--Rainer Grimm

They will change a lot of things.

C++20: Coroutines - A First Overview

by Rainer Grimm

From the article:

C++20 provides four features that change the way we think about and write modern C++: concepts, the ranges library, coroutines, and modules. I already wrote a few posts to concepts and the ranges library. Let's have a closer look at coroutines...

C++ on Sea 2020 Conference Rethink

Given where we are now with the Coronavirus pandemic, a physical event in June no longer seems feasible - or responsible.

2020 Conference Rethink

by C++ on Sea

From the article:

None of these [options] are ideal, but cancelling is our least favourite - especially given that we have a solid progamme arranged, and a lot of interest in the community. We would still prefer to hold an event in some form this year.

2020-03 post-Prague mailing available

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


2020-03 post-Prague
N4851 Pre-Prague Telco Minutes of Meeting Nina Ranns 2020-02-04 2020-03   WG21  
N4852 Prague LEWG Summary Titus Winters 2020-02-20 2020-03   WG21  
N4853 Working Draft, C++ Extensions for Library Fundamentals, Version 3 Thomas Köppe 2020-02-29 2020-03 N4840 WG21  
N4854 Editor's Report: C++ Extensions for Library Fundamentals, Version 3 Thomas Köppe 2020-02-29 2020-03   WG21  
N4855 WG21 2020-02 Prague Minutes of Meeting Nina Ranns 2020-03-07 2020-03   WG21  
N4856 C++ Extensions for Reflection David Sankel 2020-03-02 2020-03 N4818 WG21  
N4857 Reflection TS - Responses David Sankel 2020-03-02 2020-03   WG21  
P0009R10 mdspan Christian Trott, Bryce Adelstein Lelbach, Daniel Sunderland, David Hollman, H. Carter Edwards, Mauro Bianco, Ben Sander, Athanasios Iliopoulos, John Michopoulos, Mark Hoemmen 2020-02-28 2020-03 P0009R9 Library  
P0124R7 Linux-Kernel Memory Model Paul E. McKenney, Ulrich Weigand, Andrea Parri, Boqun Feng, and Alan Stern 2020-03-01 2020-03 P0124R6 SG1, SG5, SG14  
P0401R3 Providing size feedback in the Allocator interface Chris Kennelly, Jonathan Wakely 2020-03-01 2020-03 P0401R2 Library  
P0443R10 A Unified Executors Proposal for C++ Jared Hoberock, Michael Garland, Chris Kohlhoff, Chris Mysen, Carter Edwards, Gordon Brown, David Hollman, Lee Howes, Kirk Shoop, Lewis Baker, Eric Niebler 2020-02-28 2020-03 P0443R9 SG1, Library Evolution  
P0549R7 Adjuncts to std::hash Walter E Brown 2020-02-17 2020-03 P0549R6 Library  
P0586R2 Safe integral comparisons Federico Kircheis 2020-02-12 2020-03 P0586R1 Library Evolution Adopted 2020-02
P0593R6 Implicit creation of objects for low-level object manipulation Richard Smith, Ville Voutilainen 2020-02-14 2020-03 P0593R5 Evolution, Core, Library Adopted 2020-02
P0849R3 auto(x): decay-copy in the language Zhihao Yuan 2020-03-01 2020-03 P0849R2 Evolution, Library  
P0901R6 Size feedback in operator new Chris Kennelly, Andrew Hunter 2020-03-01 2020-03 P0901R5 Core  
P0943R5 Support C atomics in C++ Hans Boehm 2020-03-02 2020-03 P0943R4 Library  
P1000R4 C++ IS schedule Herb Sutter 2020-02-14 2020-03 P1000R3 WG21 Adopted 2020-02
P1040R6 std::embed and #depend JeanHeyd Meneide 2020-02-29 2020-03 P1040R5 Evolution  
P1144R5 Object relocation in terms of move plus destroy Arthur O'Dwyer 2020-03-02 2020-03 P1144R4 Evolution, Library Evolution  
P1243R4 Rangify New Algorithms Dan Raviv 2020-02-12 2020-03 P1243R3 Library Adopted 2020-02
P1264R1 Revising the wording of stream input operations Louis Dionne 2020-02-14 2020-03 P1264R0 Library  
P1385R6 A proposal to add linear algebra support to the C++ standard library Guy Davidson, Bob Steagall 2020-03-01 2020-03 P1385R5 Library Evolution  
P1425R1 Iterators pair constructors for stack and queue Corentin Jabot 2020-02-25 2020-03 P1425R0 Library Evolution, Library  
P1460R1 Mandating the Standard Library: Clause 20 - Utilities library Marshall Clow, Alberto Barbati 2020-02-14 2020-03 P1460R0 Library Adopted 2020-02
P1605R0 Member Layout Control Rene Rivera 2020-02-22 2020-03   SG14  
P1629R1 Transcoding the world - Standard Text Encoding JeanHeyd Meneide 2020-03-02 2020-03 P1629R0 SG16  
P1656R1 "Throws: Nothing" should be noexcept Agustín Bergé 2020-02-13 2020-03 P1656R0 Library Evolution  
P1656R2 "Throws: Nothing" should be noexcept Agustín Bergé 2020-02-14 2020-03 P1656R1 Library Evolution  
P1683R0 References for Standard Library Vocabulary Types - an optional case study JeanHeyd Meneide 2020-02-29 2020-03   WG21  
P1726R3 Pointer lifetime-end zap Paul E. McKenney, Maged Michael, Jens Mauer, Peter Sewell, Martin Uecker, Hans Boehm, Hubert Tong, Niall Douglas, Will Deacon, Michael Wong, and David Goldblatt 2020-02-21 2020-03 P1726R2 SG1, SG12, Evolution  
P1732R3 Do not promise support for function syntax of operators CJ Johnson 2020-02-11 2020-03 P1732R2 Library Evolution  
P1732R4 Do not promise support for function syntax of operators CJ Johnson 2020-02-21 2020-03 P1732R3 Library Evolution  
P1739R4 Avoid template bloat for safe_ranges in combination with 'subrange-y' view adaptors. Hannes Hauswedell 2020-03-01 2020-03 P1739R3 Library Adopted 2020-02
P1787R4 Declarations and where to find them S. Davis Herring 2020-03-02 2020-03 P1787R3 Core  
P1815R2 Translation-unit-local entities S. Davis Herring 2020-02-14 2020-03 P1815R1 Core Adopted 2020-02
P1831R1 deprecating volatile: library JF Bastien 2020-02-12 2020-03 P1831R0 Library Adopted 2020-02
P1847R3 Make declaration order layout mandated Pal Balog 2020-03-01 2020-03 P1847R2 Core  
P1857R3 Modules Dependency Discovery Michael Spencer 2020-02-11 2020-03 P1857R2 SG2, SG15, Core Adopted 2020-02
P1858R2 Generalized pack declaration and usage Barry Revzin 2020-03-01 2020-03 P1858R1 Evolution  
P1868R2 Unicorn width: clarifying units of width and precision in std::format Victor Zverovich, Zach Laine 2020-02-15 2020-03 P1868R1 Library Adopted 2020-02
P1885R2 Naming Text Encodings to Demystify Them Corentin Jabot 2020-03-02 2020-03 P1885R1 SG16, Library Evolution  
P1901R1 Enabling the Use of weak_ptr as Keys in Unordered Associative Containers Daryl Haresign 2020-02-15 2020-03 P1901R0 Library  
P1908R2 Reserving Attribute Names for Future Use Corentin Jabot 2020-02-19 2020-03 P1908R1 Evolution Adopted 2020-02
P1919R3 Expanding the Rights in SD-8 Nevin Liber 2020-02-15 2020-03 P1919R2 Library Evolution  
P1937R2 Fixing inconsistencies between `constexpr` and `consteval` functions David Stone 2020-02-14 2020-03 P1937R1 Core Adopted 2020-02
P1938R1 if consteval Barry Revzin, Daveed Vandevoorde, Richard Smith, Andrew Sutton 2020-03-02 2020-03 P1938R0 Evolution  
P1949R2 C++ Identifier Syntax using Unicode Standard Annex 31 Steve Downey, Zach Laine, Tom Honermann, Peter Bindels 2020-02-29 2020-03 P1949R1 SG16, Evolution, Core  
P1955R1 Top Level Is Constant Evaluated Frank Birbacher 2020-03-02 2020-03 P1955R0 Evolution  
P1956R1 On the naming of low-level bit manipulation functions Vincent Reverdy 2020-02-27 2020-03 P1956R0 Library 2020-02
P1957R2 Converting from T* to bool should be considered narrowing (re: US 212) Zhihao Yuan 2020-02-16 2020-03 P1957R1 Core, Library Adopted 2020-02
P1964R2 Wording for boolean-testable Tim Song 2020-02-15 2020-03 P1964R1 Library Adopted 2020-02
P1967R2 #embed - a simple, scannable preprocessor-based resource acquisition method JeanHeyd Meneide 2020-03-02 2020-03 P1967R1 Evolution  
P1970R2 Consistency for size() functions: add ranges::ssize() Hannes Hauswedell, Jorg Brown, Casey Carter 2020-03-01 2020-03 P1970R1 Library Adopted 2020-02
P1973R0 Rename _default_init functions (NB Comment DE002) Nicolai Josuttis 2020-02-12 2020-03   Library Evolution, Library  
P1973R1 Rename _default_init functions (NB Comment DE002) Nicolai Josuttis 2020-02-12 2020-03 P1973R0 Library Evolution, Library Adopted 2020-02
P1976R2 Fixed-size 'span' construction from dynamic-size range Tomasz Kamiński 2020-02-11 2020-03 P1976R1 Library Adopted 2020-02
P1988R1 Allow Templates in Local Classes Steve Downey 2020-02-29 2020-03 P1988R0 EWGI  
P1994R1 elements_view needs its own sentinel Tim Song, Christopher Di Bella 2020-02-15 2020-03 P1994R0 Library Adopted 2020-02
P1995R1 Contracts - Use Cases Joshua Berne, Andrzej Krzemienski, Ryan McDougall, Timur Doumler, Herb Sutter 2020-03-03 2020-03 P1995R0 SG21  
P2000R1 Direction for ISO C++ Michael Wong, Howard Hinnant, Roger Orr, Bjarne Stroustrup, Daveed Vandevoorde 2020-03-01 2020-03 P2000R0 WG21  
P2002R1 Defaulted comparison specification cleanups Richard Smith 2020-02-14 2020-03 P2002R0 Core Adopted 2020-02
P2006R1 Eliminating heap-allocations in sender/receiver with connect()/start() as basis operations Lewis Baker, Eric Niebler, Kirk Shoop, Lee Howes 2020-03-02 2020-03 P2006R0 SG1  
P2017R1 Conditionally borrowed ranges Barry Revzin 2020-02-19 2020-03 P2017R0 Library  
P2019R0 Usability improvements for std::thread Corentin Jabot 2020-03-02 2020-03   SG1, LEWGI  
P2029R1 Proposed resolution for core issues 411, 1656, and 2333; escapes in character and string literals Tom Honermann 2020-02-28 2020-03 P2029R0 Core  
P2032R0 Contracts - What Came Before Joshua Berne 2020-03-03 2020-03   SG21  
P2044R1 Member Templates for Local Classes Robert Leahy 2020-03-01 2020-03 P2044R0 Evolution  
P2045R1 Missing Mandates for the standard library Marshall Clow 2020-02-14 2020-03 P2045R0 Library Adopted 2020-02
P2053R0 Defensive Checks Versus Input Validation Rostislav Khlebnikov, John Lakos 2020-03-03 2020-03   SG21, Evolution, Library Evolution  
P2054R1 Audio I/O Software Use Cases Sophia Poirier, Frank Birbacher, Timur Doumler 2020-03-02 2020-03 P2054R0 SG13  
P2066R1 Suggested draft TS for C++ Extensions for Transaction Memory Light Jens Maurer, Hans Boehm, Victor Luchangco, Michael L. Scott, Michael Spear, and Michael Wong 2020-02-15 2020-03 P2066R0 SG1, Evolution  
P2081R1 Rebase the Library Fundamentals v3 TS on C++20 Thomas Köppe 2020-02-17 2020-03 P2081R0 Library Evolution, Library Adopted 2020-02
P2082R1 Fixing CTAD for aggregates Timur Doumler 2020-02-14 2020-03 P2082R0 Core Adopted 2020-02
P2085R0 Consistent defaulted comparisons S. Davis Herring 2020-03-09 2020-03   Evolution, Core Adopted 2020-02
P2089R0 Function parameter constraints are too fragile Barry Revzin 2020-02-17 2020-03   SG7  
P2091R0 Issues with Range Access CPOs Casey Carter 2020-02-17 2020-03   Library Adopted 2020-02
P2092R0 Disambiguating Nested-Requirements Daveed Vandevoorde, Hubert Tong 2020-01-24 2020-03   Evolution, Core Adopted 2020-02
P2095R0 Resolve lambda init-capture pack grammar (CWG2378) Barry Revzin 2020-02-17 2020-03   Core Adopted 2020-02
P2096R0 Generalized wording for partial specializations James Touton 2020-02-16 2020-03   Core  
P2098R0 Proposing std::is_specialization_of Walter E Brown, Bob Steagall 2020-02-17 2020-03   Library Evolution, Library  
P2100R0 Keep unhandled_exception of a promise type mandatory - a response to US062 and FR066 Michał Dominiak 2020-03-02 2020-03   Evolution  
P2101R0 "Models" subsumes "satisfies" (Wording for US298 and US300) Tim Song, Casey Carter 2020-02-15 2020-03   Library Adopted 2020-02
P2102R0 Make "implicit expression variations" more explicit (Wording for US185) Tim Song, Casey Carter 2020-02-15 2020-03   Library Adopted 2020-02
P2103R0 Core Language Changes for NB Comments at the February, 2020 (Prague) Meeting William M. (Mike) Miller 2020-02-14 2020-03   WG21 Adopted 2020-02
P2104R0 Resolution for GB046 - Disallow changing concept values Andrew Sutton, Roger Orr, Gabriel Dos Reis 2020-02-11 2020-03   Evolution, Core Adopted 2020-02
P2106R0 Alternative wording for GB315 and GB316 Tim Song 2020-02-15 2020-03   Library Adopted 2020-02
P2107R0 Core issue 2436: US064 Copy semantics of coroutine parameters Jens Maurer 2020-02-12 2020-03   Core Adopted 2020-02
P2108R0 Core Language Working Group "ready" issues for the February, 2020 (Prague) meeting William M. (Mike) Miller 2020-02-14 2020-03   WG21 Adopted 2020-02
P2109R0 US084: Disallow "export import foo" outside of module interface Nathan Sidwell 2020-02-25 2020-03   Core Adopted 2020-02
P2113R0 Proposed resolution for 2019 comment CA 112 Hubert S.K. Tong 2020-02-15 2020-03   Core Adopted 2020-02
P2114R0 Minimial Contract Use Cases Joshua Berne, Ryan McDougall, Andrzej Krzemieński 2020-03-03 2020-03   SG21  
P2115R0 US069: Merging of multiple definitions for unnamed unscoped enumerations Nathan Sidwell 2020-02-25 2020-03   Core Adopted 2020-02
P2116R0 Remove tuple-like protocol support from fixed-extent span Tim Song 2020-02-15 2020-03   Library Adopted 2020-02
P2117R0 C++ Standard Library Issues Resolved Directly In Prague Marshall Clow 2020-02-15 2020-03   WG21 Adopted 2020-02
P2119R0 Feedback on Simple Statistics functions Jolanta Opara 2020-02-26 2020-03   SG19  
P2120R0 Simplified structured bindings protocol with pack aliases Barry Revzin 2020-02-17 2020-03   Evolution  
P2123R0 interfaces: A Facility to Manage ABI/API Evolution Hal Finkel, Tom Scogland 2020-03-04 2020-03   EWGI, LEWGI  
P2125R0 The Ecosystem Expense of Vocabulary Types Titus Winters 2020-02-21 2020-03   Library Evolution  
P2126R0 Unleashing the Power of Allocator-Aware (AA) Infrastructure Pablo Halpern, John Lakos 2020-03-02 2020-03   Library Evolution  
P2128R0 Multidimensional subscript operator Corentin Jabot, Isabella Muerte, David Hollman, Christian Trott, Mark Hoemmen 2020-03-02 2020-03   EWGI, Evolution  
P2130R0 WG21 2020-02 Prague Record of Discussion Nina Ranns 2020-03-07 2020-03   WG21  
P2131R0 Changes between C++17 and C++20 Thomas Köppe 2020-03-02 2020-03   WG21  
P2132R0 Language Evolution status after Prague 2020 JF Bastien 2020-03-01 2020-03   WG21  
P2133R0 The Incubator needs YOU! Pal Balog 2020-03-01 2020-03   WG21  
P2134R0 Kaizen*: keep improving together! Pal Balog 2020-03-01 2020-03   WG21  
P2136R0 invoke<R> Zhihao Yuan 2020-03-02 2020-03   Library Evolution  
P2137R0 Goals and priorities for C++ Chandler Carruth, Timothy Costa, Hal Finkel, Dmitri Gribenko, D. S. Hollman, Chris Kennelly, Thomas Köppe, Damien Lebrun-Grandie, Bryce Adelstein Lelbach, Josh Levenberg, Nevin Liber, Chris Palmer, Tom Scogland, Richard Smith, David Stone, Christian Trott, Titus Winters 2020-03-02 2020-03   Evolution  
P2138R0 Rules of Design<=>Wording engagement Ville Voutilainen 2020-03-02 2020-03   Evolution, Library Evolution  
P2139R0 Reviewing Deprecated Facilities of C++20 for C++23 Alisdair Meredith 2020-03-13 2020-03   EWGI, LEWGI, Evolution, Library Evolution