Results summary: 2019 Global Developer Survey "Lite"

Over the past week, we ran our second annual global C++ developer survey, this time with questions asked by SG20.

Thank you to everyone who responded. As promised, here is a summary of the results, including aggregated highlights of common answers in the write-in responses:


The results have now been forwarded to the C++ standards committee to help inform C++ evolution. Your feedback will be very helpful, and thank you again for your participation!

Second Annual C++ Foundation Developer Survey "Lite"

cpp_logo.pngThe Standard C++ Foundation's second annual global C++ developer survey is now open. As the name suggests, it's a one-pager:

2019 Annual C++ Developer Survey "Lite"

Please take 10 minutes or so to participate! A summary of the results, including aggregated highlights of common answers in the write-in responses, will be posted publicly here on and shared with the C++ standardization committee to help inform C++ evolution.

The survey closes in one week.

Thank you for participating and helping to inform our committee and community.

Report from the February 2019 ISO C++ meeting (Core Language working group)—Jason Merrill

Short and sweet.

Report from the February 2019 ISO C++ meeting (Core Language working group)

by Jason Merrill

From the article:

The February 2019 ISO C++ meeting was held in Kailua-Kona, Hawaii. As usual, Red Hat sent three developers to the meeting: I attended in the Core Language working group, Jonathan Wakely in Library, and Thomas Rodgers in SG1 (parallelism and concurrency). The meeting went smoothly, although there was significant uncertainty at the beginning where we would end up. In the end, Modules and Coroutines were accepted into the C++20 draft, so now we have our work cut out for us nailing down the remaining loose corners. Here ar highlights from the meeting...

Trip Report: C++ Standards Meeting in Kona, February 2019—Botond Ballo

Everything you need to know.

Trip Report: C++ Standards Meeting in Kona, February 2019

by Botond Ballo

From the article:

A few weeks ago I attended a meeting of the ISO C++ Standards Committee (also known as WG21) in Kona, Hawaii. This was the first committee meeting in 2019; you can find my reports on 2018’s meetings here (November 2018, San Diego), here (June 2018, Rapperswil), and here (March 2018, Jacksonville). These reports, particularly the San Diego one, provide useful context for this post...

2019-03 post-Kona mailing available

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


2019-03 post-Kona
N4801 WG21 pre-Kona telecon minutes Nina Dinka Ranns 2019-02-08 2019-03 WG21
N4802 WG21 2018-11 San Diego Minutes Nina Dinka Ranns 2018-11-26 2019-03 N4790 WG21
N4803 Kona 2019 LEWG Summary Titus Winters 2019-02-24 2019-03 WG21
N4805 WG21 2019-02 Kona Minutes of Meeting Nina Dinka Ranns 2019-03-10 2019-03 WG21
N4806 Working Draft, C++ Extensions for Library Fundamentals, Version 3 Thomas Köppe 2019-03-13 2019-03 N4786 WG21
N4807 Editor’s Report: C++ Extensions for Library Fundamentals, Version 3 Thomas Köppe 2019-03-13 2019-03 WG21
N4808 Working Draft, C++ Extensions for Parallelism Version 2 Jared Hoberock 2019-03-11 2019-03 N4796 WG21
N4809 Parallelism TS Editor’s Report, post-Kona mailing Jared Hoberock 2019-03-11 2019-03 WG21
N4810 Working Draft, Standard for Programming Language C++ Richard Smith 2019-03-15 2019-03 N4800 WG21
N4811 Editors' Report - Programming Languages - C++ Richard Smith 2019-03-15 2019-03 WG21
P0052R10 Generic Scope Guard and RAII Wrapper for the Standard Library Peter Sommerlad, Andrew L. Sandoval 2019-02-19 2019-03 P0052R9 Library Adopted 2019-03
P0201R5 A polymorphic value-type for C++ Jonathan Coe, Sean Parent 2019-03-11 2019-03 P0201R4 Library Evolution, Library
P0339R6 polymorphic_allocator<> as a vocabulary type Pablo Halpern, Dietmar Kühl 2019-02-22 2019-03 P0339R5 Library Adopted 2019-03
P0340R3 Making std::underlying_type SFINAE-friendly Tim Song 2019-02-21 2019-03 P0340R2 Library Adopted 2019-03
P0466R3 Layout-compatibility and Pointer-interconvertibility Traits Lisa Lippincott 2019-03-08 2019-03 P0466R2 Library
P0553R4 Bit operations Jens Maurer 2019-03-01 2019-03 P0553R3 Library
P0631R6 Math Constants Lev Minkovsky, John McFarlane 2019-02-25 2019-03 P0631R5 Library
P0645R7 Text Formatting Victor Zverovich 2019-03-09 2019-03 P0645R6 Library Evolution, Library
P0660R9 Stop Token and Joining Thread Nicolai Josuttis, Lewis Baker, Billy O’Neal, Herb Sutter, Anthony Williams 2019-03-10 2019-03 P0660R8 SG1, Library Evolution, Library
P0664R8 C++ Coroutine TS Issues Gor Nishanov 2019-02-21 2019-03 P0664R7 Core
P0738R2 I Stream, You Stream, We All Stream for istream_iterator Casey Carter 2019-02-21 2019-03 P0738R1 Library Adopted 2019-03
P0798R4 Monadic operations for std::optional Simon Brand 2019-03-11 2019-03 P0798R3 Library
P0811R3 Well-behaved interpolation for numbers and pointers S. Davis Herring 2019-02-22 2019-03 P0811R2 Library Adopted 2019-03
P0813R1 construct() shall Return the Replaced Address Nicolai Josuttis 2019-02-20 2019-03 P0813R0 Library Evolution, Library
P0881R4 A Proposal to add stacktrace library Alexey Gorgurov, Antony Polukhin 2019-01-22 2019-03 P0881R3 Core, Library
P0912R5 Merge Coroutines TS into C++20 working draft Gor Nishanov 2019-02-22 2019-03 P0912R4 WG21 Adopted 2019-03
P0920R2 Precalculated hash values in lookup Mateusz Pusz 2019-02-22 2019-03 P0920R1 Library Adopted 2019-03
P0943R2 Support C atomics in C++ Hans-J. Boehm 2019-03-10 2019-03 P0943R1 SG1, Library Evolution
P0960R3 Allow initializing aggregates from a parenthesized list of values Ville Voutilainen, Thomas Köppe 2019-02-22 2019-03 P0960R2 Evolution, Core Adopted 2019-03
P0985R4 LWG Chair post-meeting report Marshall Clow 2019-03-10 2019-03 P0985R3 WG21
P1001R2 Target Vectorization Policies from Parallelism V2 TS to C++20 Alisdair Meredith, Pablo Halpern 2019-02-22 2019-03 P1001R1 SG1, Library Adopted 2019-03
P1009R2 Array size deduction in new-expressions Timur Doumler 2019-02-22 2019-03 P1009R1 Core Adopted 2019-03
P1018R3 Evolution status after Kona 2019 Ville Voutilainen 2019-03-11 2019-03 P1018R2 WG21
P1024R3 Usability Enhancements for std::span Tristan Brindle 2019-02-22 2019-03 P1024R2 Library Adopted 2019-03
P1035R5 Input Range Adaptors Christopher Di Bella, Casey Carter, Corentin Jabot 2019-03-05 2019-03 P1035R4 Library
P1041R4 Make char16_t/char32_t string literals be UTF-16/32 R. Martinho Fernandes 2019-02-18 2019-03 P1041R3 Evolution, Core Adopted 2019-03
P1091R3 Extending structured bindings to be more like variable declarations Nicolas Lesser 2019-02-18 2019-03 P1091R2 Core Adopted 2019-03
P1099R4 Using Enum Gašper Ažman, Jonathan Müller 2019-03-10 2019-03 P1099R3 Core
P1103R3 Merging Modules Richard Smith 2019-02-22 2019-03 P1103R2 WG21 Adopted 2019-03
P1135R4 The C++20 Synchronization Library Bryce Adelstein Lelbach, Olivier Giroux, JF Bastien, Detlef Vollmann, David Olsen 2019-03-04 2019-03 P1135R3 Library
P1139R2 Address wording issues related to ISO 10646 R. Martinho Fernandes 2019-02-18 2019-03 P1139R1 SG16, Core Adopted 2019-03
P1144R3 Object relocation in terms of move plus destroy Arthur O'Dwyer 2019-03-10 2019-03 P1144R2 Library Evolution, Library
P1152R2 Deprecating volatile JF Bastien 2019-03-09 2019-03 P1152R1 Core, Library Evolution, Library
P1154R2 Type traits for structural comparison Arthur O'Dwyer, Jeff Snyder 2019-03-10 2019-03 P1154R1 Library
P1161R3 Deprecate uses of the comma operator in subscripting expressions Corentin Jabot 2019-02-22 2019-03 P1161R2 Core
P1164R1 Make create_directory() intuitive Nicolai Josuttis 2019-02-22 2019-03 P1164R0 Library Adopted 2019-03
P1185R2 <=> != == Barry Revzin 2019-02-22 2019-03 P1185R1 Evolution, Core Adopted 2019-03
P1189R0 Adding <=> to library Barry Revzin 2019-03-10 2019-03 Library Evolution
P1208R4 Adopt source location from Library Fundamentals V3 for C++20 Robert Douglas, Corentin Jabot 2019-03-11 2019-03 P1208R3 Library
P1217R1 Out-of-thin-air, revisited, again Hans-J. Boehm 2019-03-10 2019-03 P1217R0 SG1
P1219R1 Homogeneous variadic function parameters James Touton 2019-03-11 2019-03 P1219R0 Evolution
P1227R2 Signed ssize() functions, unsigned size() functions Jorg Brown 2019-02-22 2019-03 P1227R1 Library Adopted 2019-03
P1243R2 Rangify New Algorithms Dan Raviv 2019-03-09 2019-03 P1243R1 Library
P1252R2 Ranges Design Cleanup Casey Carter 2019-02-22 2019-03 P1252R1 Library Adopted 2019-03
P1255R3 A view of 0 or 1 elements: view::maybe Steve Downey 2019-03-10 2019-03 P1255R2 Library Evolution
P1257R0 Implementation experience on trying to implement concurrent data and control structures with executors Detlef Vollmann 2018-10-16 2019-03 SG1, Library Evolution
P1272R1 Byteswapping for fun&&nuf Isabella Muerte 2019-02-21 2019-03 P1272R0 Library
P1286R2 Contra CWG DR1778 Richard Smith 2019-02-18 2019-03 P1286R1 Core, Library Adopted 2019-03
P1290R2 Avoiding undefined behavior in contracts J. Daniel Garcia, Ville Voutilainen 2019-02-20 2019-03 P1290R1 Evolution, Core
P1290R3 Avoiding undefined behavior in contracts J. Daniel Garcia, Ville Voutilainen 2019-03-09 2019-03 P1290R2 Evolution, Core
P1323R2 Contract postconditions and return type deduction Hubert S.K. Tong 2019-02-20 2019-03 P1323R1 Core Adopted 2019-03
P1338R1 WG21 2018-11 San Diego Record of Discussion Nina Dinka Ranns 2018-11-26 2019-03 P1338R0 WG21
P1339R1 Disallowing the friending of names in namespace std CJ Johnson 2019-03-04 2019-03 P1339R0 Library Evolution, Library
P1344R1 Pre/Post vs. Enspects/Exsures Nathan Myers 2019-02-20 2019-03 P1344R0 Core
P1354R0 SG7 Guidelines for Review of Proposals Chandler Carruth 2018-11-08 2019-03 SG7
P1357R1 Traits for [Un]bounded Arrays Walter E. Brown, Glen J. Fernandes 2019-02-22 2019-03 P1357R0 Library Adopted 2019-03
P1358R0 Core "ready" Issues William M. Miller 2019-02-22 2019-03 WG21 Adopted 2019-03
P1359R0 Core "tentatively ready" Issues William M. Miller 2019-02-21 2019-03 WG21 Adopted 2019-03
P1368R1 Multiplication and division of fixed-point numbers S. Davis Herring 2019-03-05 2019-03 P1368R0 SG6
P1370R1 Generic numerical algorithm development with(out) numeric_limits Mark Hoemmen, Damien Lebrun-Grandie 2019-03-10 2019-03 P1370R0 SG6, Library Evolution Incubator
P1375R1 More Constrained: Apples or Oranges? On the road to semantic constraint matching Hubert S.K. Tong 2019-03-11 2019-03 P1375R0 Evolution
P1381R1 Reference capture of structured bindings Nicolas Lesser 2019-02-22 2019-03 P1381R0 Evolution Adopted 2019-03
P1382R1 volatile_load<T> and volatile_store<T> JF Bastien, Paul McKenney, Jeffrey Yasskin 2019-03-10 2019-03 P1382R0 SG1
P1385R1 A proposal to add linear algebra support to the C++ standard library Guy Davidson, Bob Steagall 2019-03-10 2019-03 P1385R0 SG14, Library Evolution
P1386R1 A Standard Audio API for C++: Motivation, Scope, and Basic Design Guy Somberg, Guy Davidson, Timur Doumler 2019-03-11 2019-03 P1386R0 SG13, Library Evolution
P1390R1 Reflection TS NB comment resolutions: summary and rationale Matúš Chochlík, Axel Naumann, and David Sankel 2019-02-22 2019-03 P1390R0 SG7, Evolution, Core, Library Evolution, Library Adopted 2019-03
P1391R1 Range constructor for std::string_view Corentin Jabot 2019-03-08 2019-03 P1391R0 Library
P1394R1 Range constructor for std::span Corentin Jabot, Casey Carter 2019-03-11 2019-03 P1394R0 Library
P1407R1 Tell Programmers About Signed Integer Overflow Behavior Scott Schurr 2019-03-08 2019-03 P1407R0 SG12
P1423R1 char8_t backward compatibility remediation Tom Honermann 2019-03-09 2019-03 P1423R0 Library
P1429R1 Contracts That Work Joshua Berne, John Lakos 2019-03-08 2019-03 P1429R0 Evolution
P1430R1 First-class symmetric coroutines in C++ Mihail Mihaylov, Vassil Vassilev 2019-02-08 2019-03 P1430R0 Evolution
P1438R1 A Rational Number Library for C++ Bill Seymour 2019-03-10 2019-03 P1438R0 SG6
P1439R1 Charset Transcoding, Transformation, and Transliteration Steve Downey 2019-03-10 2019-03 P1439R0 SG16
P1441R1 Are modules fast? Rene Rivera 2019-03-06 2019-03 P1441R0 WG21
P1452R1 On the non-uniform semantics of return-type-requirements Hubert S.K. Tong 2019-03-11 2019-03 P1452R0 Evolution
P1458R1 Mandating the Standard Library: Clause 16 - Language support library Marshall Clow 2019-02-20 2019-03 P1458R0 Library Adopted 2019-03
P1459R1 Mandating the Standard Library: Clause 18 - Diagnostics library Marshall Clow 2019-02-20 2019-03 P1459R0 Library Adopted 2019-03
P1462R1 Mandating the Standard Library: Clause 20 - Strings library Marshall Clow 2019-02-20 2019-03 P1462R0 Library Adopted 2019-03
P1463R1 Mandating the Standard Library: Clause 21 - Containers library Marshall Clow 2019-02-22 2019-03 P1463R0 Library Adopted 2019-03
P1464R1 Mandating the Standard Library: Clause 22 - Iterators library Marshall Clow 2019-02-20 2019-03 P1464R0 Library Adopted 2019-03
P1466R1 Miscellaneous minor fixes for chrono Howard E. Hinnant 2019-03-10 2019-03 P1466R0 Library
P1477R1 Coroutines TS Simplifications Lewis Baker 2019-02-12 2019-03 P1477R0 Evolution
P1478R0 Byte-wise atomic memcpy Hans-J. Boehm 2019-01-20 2019-03 SG1
P1478R1 Byte-wise atomic memcpy Hans-J. Boehm 2019-03-10 2019-03 P1478R0 SG1
P1482R0 Modules Feedback Bruno Cardoso Lopes, Michael Spencer, JF Bastien 2019-02-08 2019-03 SG15, Evolution
P1484R1 A uniform and predefined mapping from modules to filenames Peter Bindels 2019-03-11 2019-03 P1484R0 SG15
P1485R0 Better keywords for the Coroutines TS Antony Polukhin 2019-02-17 2019-03 Evolution
P1490R0 Contract-Related Issues Andrzej Krzemieński 2018-02-13 2019-03 Evolution
P1491R0 Don’t add to the signed/unsigned mess Bjarne Stroustrup 2019-02-14 2019-03 Evolution, Library Evolution
P1492R0 Coroutines: Language and Implementation Impact Richard Smith, Daveed Vandevoorde, Geoffrey Romer, Gor Nishanov, Nathan Sidwell, Iain Sandoe, Lewis Baker 2019-02-19 2019-03 WG21
P1493R0 Coroutines: Use-cases and Trade-offs Geoffrey Romer, Gor Nishanov, Lewis Baker, Mihail Mihailov 2019-02-19 2019-03 WG21
P1494R0 Partial program correctness S. Davis Herring 2019-03-07 2019-03 Evolution, Core, Library Evolution
P1498R0 Constrained Internal Linkage for Modules Chandler Carruth, Nathan Sidwell, Richard Smith 2019-02-20 2019-03 Evolution
P1498R1 Constrained Internal Linkage for Modules Chandler Carruth, Nathan Sidwell, Richard Smith 2019-02-23 2019-03 P1498R0 Evolution
P1502R0 Standard library header units for C++20 Richard Smith 2019-03-15 2019-03 Evolution, Library Evolution
P1505R0 Mandating the Standard Library: Clause 30 - Atomic operations library Daniel Sunderland 2019-03-10 2019-03 Library
P1517R0 Contract Requirements for Iterative High-Assurance Systems Ryan McDougall 2019-03-01 2019-03 Evolution
P1518R0 Stop overconstraining allocators in container deduction guides Arthur O'Dwyer, Mike Spertus 2019-03-10 2019-03 Library Evolution
P1520R0 Response to response to “Fibers under the magnifying glass” Gor Nishanov 2019-03-08 2019-03 SG1
P1601R0 Recommendations for Specifying “Hidden Friends” Walter E. Brown, Daniel Sunderland 2019-03-10 2019-03 Library Evolution, Library
P1602R0 Make Me A Module Nathan Sidwell 2019-03-01 2019-03 Evolution
P1604R0 The inline keyword is not in line with the design of modules. Corentin Jabot 2019-01-21 2019-03 Evolution
P1606R0 Requirements for Contract Roles Joshua Berne 2019-03-08 2019-03 Evolution
P1607R0 Minimizing Contracts Joshua Berne, Jeff Snyder 2019-03-08 2019-03 Evolution
P1609R0 C++ Should Support Just-in-Time Compilation Hal Finkel 2019-03-10 2019-03 Evolution Incubator
P1610R0 Rename await_resume() to await_result() Mathias Stearn 2019-03-10 2019-03 Library Evolution
P1611R0 WG21 2019-02 Kona Record of Discussion Nina Dinka Ranns 2019-03-10 2019-03 WG21
P1612R0 Relocate Endian's Specification Walter E. Brown, Arthur O’Dwyer 2019-03-10 2019-03 Library Evolution, Library
P1614R0 The Mothership Has Landed: Adding <=> to the Library Barry Revzin 2019-03-11 2019-03 Library
P1616R0 Using unconstrained template template parameters with constrained templates Mike Spertus, Roland Bock 2019-03-11 2019-03 Evolution
P1619R0 Functions for Testing Boundary Conditions on Integer Operations Lisa Lippincott 2019-03-10 2019-03 SG6, Library Evolution
P1622R0 Mandating the Standard Library: Clause 31 - Thread support library Daniel Sunderland 2019-03-10 2019-03 Library
P1625R0 Contracts: why the house is not on fire (i.e. why the status quo is tolerable) Ville Voutilainen 2019-03-11 2019-03 WG21

Trip report: February 2019 ISO C++ committee meeting, Kona, Hawai’i—Timur Doumler

Another report.

Trip report: February 2019 ISO C++ committee meeting, Kona, Hawai’i

by Timur Doumler

From the article:

What better way to start my new blog than to publish a trip report from the most recent C++ committee meeting on the wonderful Big Island of Hawai’i?

If you are looking for an incredibly detailed report of everything that happened, please instead head to this report by Bryce and others, and also see Herb Sutter’s and cor3ntin’s reports. I won’t try to provide this breadth of coverage, and instead focus on a few areas that are particularly relevant for me and the community that I am proxying here:

  • Making C++ simpler, more uniform, and easier to teach;
  • Providing developers with better tools;
  • Improving support for low-latency and real-time(-ish) programming,
  • 2D Graphics, Audio, and other forms of I/O and human-machine interaction.

That being said, let’s start with the big news: we voted both Coroutines and Modules into C++20!

Kona: Trip Report—Guy Davidson

The committee met in Kona, Hawai'i recently; here's a trip report.

Telescopes, matrices and audio: Kona trip report

by Guy Davidson

From the article:

As we stopped and parked among the telescopes, wandering from building to building, we realised that there was probably plenty of C++ code executing behind the doors of the observatories. We are never far from our trade.

Trip report: Winter ISO C++ standards meeting (Kona) —Herb Sutter

From the just-concluded ISO C++ meeting:

Trip report: Winter ISO C++ standards meeting (Kona)

by Herb Sutter

From the article:

Per our official C++20 schedule, this was the last meeting to approve features for C++20...

So we now know most of the final feature set of C++20! At our next meeting in July, we expect to formally adopt a few additional features that were design-approved at this meeting but didn’t complete full wording specification review this week, and then at the end of the July meeting we will launch the primary international comment ballot (aka CD ballot) for C++20....