Standardization

Trip Report: C++ Standards Meeting in Albuquerque, November 2017--Botond Ballo

A thorough and detailed summary of the recent six-day meeting.

Trip Report: C++ Standards Meeting in Albuquerque, November 2017

by Botond Ballo

From the article:

A couple of weeks ago I attended a meeting of the ISO C++ Standards Committee (also known as WG21) in Albuquerque, New Mexico. This was the third committee meeting in 2017; you can find my reports on previous meetings here (February 2017, Kona) and here (July 2017, Toronto). These reports, particularly the Toronto one, provide useful context for this post.

With the final C++17 International Standard (IS) having been voted for publication, this meeting was focused on C++20, and the various Technical Specifications (TS) we have in flight, most notably Modules...

2017-10 pre-Albuquerque mailing available

The full 2017-10 mailing of new standards papers is now available.

 

N4693 PL22.16/WG21 draft agenda: 06-11 Nov 2017, Albuquerque, NM, US Clark Nelson 2017-08-12 2017-10   WG21  
N4694 Responses to National Body Comments to ISO/IEC PDTS 21425, C++ Extensions for Ranges Casey Carter 2017-08-10 2017-10   WG21  
N4695 Working Draft, C++ Extensions for Networking Jonathan Wakely   missing   WG21  
N4696 Networking TS - Editor's Report Jonathan Wakely   missing   WG21  
N4697 NB Comments, ISO/IEC PDTS 21544, C++ Extensions for Modules Barry Hedquist 2017-10-07 2017-10   WG21  
N4698 Working Draft, Technical Specification for C++ Extensions for Parallelism Version 2 Jared Hoberock 2017-10-16 2017-10 N4669 WG21  
N4699 Parallelism TS Editor's Report Jared Hoberock 2017-10-16 2017-10   WG21  
N4700 Working Draft, Standard for Programming Language C++ Note: Richard Smith 2017-10-16 2017-10 N4687 WG21  
N4701 Editor's Report -- Working Draft, Standard for Programming Language C++ Richard Smith 2017-10-16 2017-10   WG21  
P0009R4 Polymorphic Multidimensional Array Reference H. Carter Edwards, Bryce Lelbach, Christian Trott, Mauro Bianco, Robin Maffeo, Ben Sander, Athanasios Iliopoulos, John Michopoulos 2017-10-11 2017-10 P0009R3 Library Evolution  
P0037R4 Fixed-point real numbers John McFarlane 2017-10-16 2017-10 P0037R3 Numerics, SG14, Library Evolution  
P0096R5 Feature-testing recommendations for C++ Clark Nelson 2017-10-09 2017-10 P0096R4 SG10, Evolution, Library Evolution  
P0124R4 Linux-Kernel Memory Model Paul E. McKenney, Ulrich Weigand, Andrea Parri, Boqun Feng 2017-09-25 2017-10 P0124R3 Concurrency  
P0196R4 Generic none() factories for Nullable types Vicente J. Botet Escriba 2017-10-15 2017-10 P0196R3 Library Evolution  
P0201R2 A polymorphic value-type for C++ Jonathan Coe 2017-10-16 2017-10 P0201R1 Library Evolution  
P0202R2 Add Constexpr Modifiers to Functions in <algorithm> and <cstring> Headers Antony Polukhin 2017-09-12 2017-10 P0202R1 Library Evolution  
P0214r6 Data-Parallel Vector Types & Operations Matthias Kretz 2017-10-16 2017-10 P0214R5 Library  
P0233r6 Hazard Pointers: Safe Reclamation for Optimistic Concurrency Maged M. Michael, Michael Wong, Paul McKenney, Arthur O'Dwyer, David Hollman, Geoffrey Romer, Andrew Hunter 2017-10-15 2017-10 P0233R5 Concurrency, SG14, Library Evolution  
P0237r9 Wording for fundamental bit manipulation utilities Vincent Reverdy, Robert J. Brunner 2017-10-16 2017-10 P0237r8 Library  
P0260R2 C++ Concurrent Queues Lawrence Crowl, Chris Mysen 2017-10-15 2017-10 P0260R1 Concurrency  
P0275R2 A Proposal to add Classes and Functions Required for Dynamic Library Load Antony Polukhin 2017-09-12 2017-10 P0275R1 Library Evolution, Evolution  
P0303R0 Extensions to C++ for Short Float Type Boris Fomitchev, Sergei Nikolaev, Olivier Giroux, Lawrence Crowl 2017-10-15 2017-10   Evolution, Library Evolution  
P0315R3 Lambdas in unevaluated context Louis Dionne, Hubert Tong 2017-10-11 2017-10 P0315R2 Core  
P0323R3 Utility class to represent expected object Vicente J. Botet Escriba 2017-10-15 2017-10 P0323R2 Library Evolution  
P0327R3 Product types access Vicente J. Botet Escriba 2017-10-15 2017-10 P0327R2 Evolution, SG7, Library Evolution  
P0330R1 User-Defined Literals for size_t Rein Halbersma 2017-10-12 2017-10 P0330R0 Library  
P0332R1 Relaxed Incomplete Multidimensional Array Type Declaration H. Carter Edwards, Bryce Lelbach, Christian Trott, Mauro Bianco, Athanasios Iliopoulos, John Michopoulos 2017-10-11 2017-10 P0332R0 Library Evolution, Evolution  
P0355R4 Extending <code><chrono></code> to Calendars and Time Zones Howard Hinnant 2017-10-16 2017-10 P0355R3 Library Evolution  
P0356R2 Simplified partial function application Tomasz Kamiński 2017-10-14 2017-10 P0356R1 Library Evolution  
P0399R0 Networking TS & Threadpools Gor Nishanov 2017-10-15 2017-10   Concurrency, Library Evolution  
P0424R1 Reconsidering literal operator templates for strings Louis Dionne, Hana Dusikova 2017-10-16 2017-10 P0424R0 Evolution  
P0429R2 A Standard flat_map Zach Laine 2017-08-31 2017-10 P0429R1 Library, Library Evolution  
P0443R3 A Unified Executors Proposal for C++ Jared Hoberock, Michael Garland, Chris Kohlhoff, Chris Mysen, Carter Edwards, Gordon Brown 2017-10-16 2017-10 P0443R2 Concurrency  
P0447R4 Introduction of std::colony to the standard library Patrice Roy, Guy Davidson, Matthew Bentley 2017-10-16 2017-10 P0447R3 Library Evolution, SG14  
P0461R2 Proposed RCU C++ API Paul E. McKenney, Maged Michael, Michael Wong, Isabella Muerte, Arthur O'Dwyer, David Hollman, Andrew Hunter, Georey Romer, Lance Roy 2017-10-15 2017-10 P0461R1 Concurrency  
P0479R2 Attributes for Likely and Unlikely Branches Clay Trychta 2017-10-16 2017-10 P0479R1 Evolution, SG14  
P0506R2 use string_view for library function parameters instead of const string & / const char * Peter Sommerlad 2017-10-06 2017-10 P0506R1 Library, Library Evolution  
P0514R2 Efficient waiting for concurrent programs Olivier Giroux 2017-10-09 2017-10 P0514R1 Concurrency  
P0515R2 Consistent comparison Herb Sutter 2017-09-30 2017-10 P0515R1 Evolution, Library Evolution, Core, Library  
P0533R1 constexpr for <cmath> and <cstdlib> Edward J. Rosten / Oliver J. Rosten 2017-10-13 2017-10 P0533R0 SG6, Library Evolution  
P0534R3 call/cc (call-with-current-continuation): A low-level API for stackful context switching Oliver Kowalke 2017-10-15 2017-10 P0534R2 Library Evolution  
P0539R2 A Proposal to add wide_int Template Class Igor Klevanets, Antony Polukhin 2017-10-10 2017-10 P0539R1 Numerics  
P0546R1 Span - foundation for the future Carter Edwards, Bryce Lelbach 2017-10-11 2017-10 P0546R0 Library Evolution  
P0549R2 Adjuncts to std::hash Walter E. Brown 2017-10-10 2017-10 P0549R1 Library Evolution  
P0551R1 Thou Shalt Not Specialize std Function Templates! Walter E. Brown 2017-10-14 2017-10 P0551R0 Library Evolution  
P0561R2 RAII Interface for Deferred Reclamation Geoffrey Romer, Andrew Hunter 2017-10-11 2017-10 P0561R1 Concurrency, Library Evolution  
P0566R3 Proposed Wording for Concurrent Data Structures: Hazard Pointer and Read-Copy-Update (RCU) Michael Wong, Maged M. Michael, Paul McKenney, Geoffrey Romer, Andrew Hunter, Arthur O'Dwyer 2017-10-15 2017-10 P0566R2 Concurrency, SG14, Library Evolution, Library  
P0571R1 Type Requirements for <numeric> Algorithms Bryce Adelstein Lelbach 2017-02-02 2017-10 P0571R0 Concurrency, Library Evolution, Library  
P0573R2 Abbreviated Lambdas for Fun and Profit Barry Revzin, Tomasz Kamiński 2017-10-08 2017-10 P0573R1 Evolution  
P0586R0 Safe integral comparisons Federico Kircheis 2017-09-12 2017-10   Library Evolution  
P0593R1 Implicit creation of objects for low-level object manipulation Richard Smith, Ville Voutilainen 2017-10-16 2017-10 P0593R0 SG12  
P0609R1 Attributes for Structured Bindings Aaron Ballman 2017-09-14 2017-10 P0609R0 Evolution  
P0624R1 Default constructible stateless lambdas Louis Dionne 2017-08-16 2017-10 P0624R0 Evolution  
P0631R1 Math Constants Lev Minkovsky, John McFarlane 2017-09-26 2017-10 P0631R0 Library Evolution, Numerics  
P0634R1 Down with `typename`! Daveed Vandevoorde, Nina Ranns 2017-10-15 2017-10 P0634R0 Core  
P0636R2 Changes between C++14 and C++17 Thomas Köppe 2017-10-15 2017-10 P0636R1 All  
P0642R1 Structural Support for C++ Concurrency Mingxin Wang, Wei Chen 2017-09-01 2017-10 P0642R0 Concurrency, SG8, Evolution, Library Evolution  
P0644R1 Forward without forward Barry Revzin 2017-10-08 2017-10 P0644R0 Evolution  
P0649R0 Other Product-Type algorithms Vicente J. Botet Escriba 2017-06-15 2017-10   SG7, Library Evolution  
P0650R1 C++ Monadic interface Vicente J. Botet Escriba 2017-10-15 2017-10 P0650R0 Library Evolution  
P0655R0 visit<R>: Explicit Return Type for visit Michael Park, Agustín Bergé 2017-10-14 2017-10   Library Evolution  
P0657R1 Deprecate Certain Declarations in the Global Namespace Walter Brown 2017-10-10 2017-10 P0657R0 Library Evolution  
P0658R1 Proposal for adding alias declarations to concepts Christopher Di Bella 2017-06-11 2017-10 P0658R0 Evolution  
P0670R1 Static reflection of functions Matúš Chochlík, Axel Naumann, David Sankel 2017-10-15 2017-10 P0670R0 SG7, Evolution, Library Evolution  
P0684R1 C++ Stability, Velocity, and Deployment Plans Titus Winters 2017-10-11 2017-10 P0684R0 WG21  
P0692R0 Access Specifiers and Specializations Matt Calabrese 2017-06-17 2017-10   Evolution  
P0701R1 Back to the std2::future Bryce Adelstein Lelbach 2017-09-10 2017-10 P0701R0 Concurrency  
P0707R2 Metaclasses: Generative C++ Herb Sutter 2017-10-15 2017-10 P0707R1 SG7  
P0722R1 Efficient sized delete for variable sized classes Andrew Hunter, Richard Smith 2017-10-12 2017-10 P0722R0 Evolution  
P0735R0 Interaction of memory_order_consume with release sequences Will Deacon 2017-10-02 2017-10   Concurrency  
P0737R0 Execution Context of Execution Agents H. Carter Edwards, Daniel Sunderland, Michael Wong, Thomas Rodgers, Gordon Brown 2017-10-11 2017-10   Concurrency  
P0750R0 Consume JF Bastien 2017-10-15 2017-10   Concurrency  
P0752R0 std::vector Destruction Order Nathan Myers 2017-10-15 2017-10   Library  
P0753R1 Manipulators for C++ Synchronized Buffered Ostream Peter Sommerlad, Pablo Halpern 2017-10-15 2017-10   Library Evolution  
P0756R0 Lambda syntax should be more liberal in what it accepts Arthur O'Dwyer 2017-08-12 2017-10   Evolution  
P0757R0 regex_iterator should be iterable Arthur O'Dwyer 2017-09-10 2017-10   Library Evolution  
P0761R1 Executors Design Document Jared Hoberock, Michael Garland, Chris Kohlhoff, Chris Mysen, Carter Edwards, Gordon Brown, Michael Wong 2017-10-16 2017-10 P0761R0 Concurrency  
P0762R0 Concerns about expected<T, E> from the Boost.Outcome peer review Niall Douglas 2017-10-15 2017-10   Library Evolution  
P0766R1 Fixing small-ish functionality gaps in constraints Ville Voutilainen 2017-10-15 2017-10 P0766R0 Evolution  
P0767R0 Expunge POD Jens Maurer 2017-09-29 2017-10   Library Evolution, Library, Core  
P0768R0 Library Support for the Spaceship (Comparison) Operaton Walter Brown 2017-09-30 2017-10   Library Evolution  
P0769R0 Add shift to <algorithm> Dan Raviv 2017-10-11 2017-10   Library Evolution  
P0770R0 A Proposal to Specify Behavior in Case of Exception Allocation Failure Michael Kilburn 2017-08-21 2017-10   Evolution, Core  
P0771R0 std::function move operations should be noexcept Nevin Liber 2017-10-16 2017-10   Library  
P0772R0 Execution-Agent Local Storage Nat Goodspeed 2017-10-08 2017-10   Concurrency  
P0773R0 Towards meaningful fancy pointers Arthur O'Dwyer, Bob Steagall 2017-10-05 2017-10   Library Evolution  
P0774R0 Module-decl location Nathan Sidwell 2017-10-02 2017-10   Evolution  
P0775R0 module partitions Nathan Sidwell 2017-10-03 2017-10   Core, Evolution  
P0776R0 Rebase the Concurrency TS onto C++17 Standard Alisdair Meredith 2017-09-08 2017-10   Concurrency, Library Evolution  
P0777R0 Treating Unnecessary decay Walter Brown 2017-10-10 2017-10   Library  
P0778R0 Module Names Nathan Sidwell 2017-10-10 2017-10   Core, Evolution  
P0779R0 Proposing operator try() (with added native C++ macro functions!) Niall Douglas 2017-10-15 2017-10   Evolution  
P0780R0 Allow pack expansion in lambda init-capture Barry Revzin 2017-10-08 2017-10   Evolution  
P0781R0 A Modern C++ Signature for main Erich Keane 2017-09-25 2017-10   Evolution  
P0782R0 A Case for Simplifying/Improving Natural Syntax Concepts Erich Keane, Adam David Alan Martin, Allan Deutsch 2017-09-25 2017-10   Evolution  
P0783R0 Continuations without overcomplicating the future Lee Howes, Andrii Grynenko, Jay Feldblum 2017-09-11 2017-10   Concurrency  
P0784R0 Standard containers and constexpr Louis Dionne, Richard Smith, Daveed Vandevoorde 2017-10-14 2017-10   Evolution, Library Evolution  
P0785R0 Runtime-sized arrays and a C++ wrapper Jens Maurer 2017-09-30 2017-10   Evolution, Library Evolution  
P0786R0 SuccessOrFailure, ValuedOrError and ValuedOrNone types Vicente J. Botet Escriba 2017-10-15 2017-10   Library Evolution  
P0787R0 Proclaimed Ownership Nathan Sidwell 2017-10-13 2017-10   Core, Evolution  
P0788R0 Standard Library Specification in a Concepts and Contracts World Walter Brown 2017-10-10 2017-10   Library Evolution, Library  
P0789R0 Range Adaptors and Utilities Eric Niebler 2017-10-16 2017-10   Library Evolution  
P0790R0 Effect of operator<=> on the C++ Standard Library David Stone 2017-10-06 2017-10   Library Evolution  
P0791R0 Concepts are Adjectives, not Nouns Jakob Riedle 2017-10-10 2017-10   Evolution  
P0792R0 function_ref: a non-owning reference to a Callable Vittorio Romeo 2017-10-10 2017-10   Library Evolution  
P0795R0 From Vulkan with love: a plea to reconsider the Module Keyword to be contextual Simon Brand, Neil Henning, Michael Wong, Christopher Di Bella, Kenneth Benzie 2017-10-16 2017-10   SG14, Evolution  
P0796R0 Supporting Heterogeneous & Distributed Computing Through Affinity Gordon Brown, Ruyman Reyes, Michael Wong, H. Carter Edwards, Thomas Rodgers 2017-10-16 2017-10   Concurrency, SG14  
P0797R0 Exception Handling in Parallel STL Algorithms Matti Rintala, Michael Wong, Carter Edwards, Gordon Brown 2017-10-16 2017-10   Concurrency, SG14, Library Evolution, Library  
P0798R0 Monadic operations for std::optional Simon Brand 2017-10-06 2017-10   SG14, Library Evolution  
P0799R0 Programming vulnerabilities for C++ (part of WG23 N0746) Stephen Michel, Chris Szalwinski, Michael Wong, Hubert Tong 2017-10-16 2017-10   SG12  
P0800R0 The Concepts TS improves upon C++ Christopher Di Bella 2017-08-28 2017-10   Evolution  
P0801R0 Extensions for Disambiguation Tags Mingxin Wang 2017-10-12 2017-10   Library, Library Evolution, SG7  
P0803R0 Endian Library Request for Comments Beman Dawes 2017-10-15 2017-10   Library Evolution  
P0804R0 Impact of the Modules TS on the C++ tools ecosystem Tom Honermann 2017-10-15 2017-10   Evolution  
P0805R0 Comparing containers Marshall Clow 2017-10-16 2017-10   Library Evolution, Library  
P0806R0 Deprecate Implicit Capture of thist Thomas Köppe 2017-10-08 2017-10   Evolution  
P0807R0 An Adjective Syntax for Concepts Thomas Köppe 2017-10-12 2017-10   Evolution  
P0808R0 Ranges Naming Titus Winters 2017-10-12 2017-10   Library Evolution  
P0809R0 Comparing Unordered Containers Titus Winters 2017-10-12 2017-10   Library Evolution, Library  
P0810R0 constexpr in Practice Ben Deane, Jason Turner 2017-10-12 2017-10   WG21  
P0811R0 Well-behaved interpolation for numbers and pointers Davis Herring 2017-10-16 2017-10   Numerics  
P0812R0 copy-list-initialization is inherently un-= Davis Herring 2017-10-16 2017-10   Evolution  
P0813R0 construct() shall Return the Replaced Address Nicolai Josuttis 2017-10-13 2017-10   Library Evolution, Library  
P0814R0 hash_combine() Again Nicolai Josuttis 2017-10-13 2017-10   Library Evolution, Library  
P0815R0 C++ Standard Library Issues to be moved in Albuquerque Marshall Clow 2017-10-16 2017-10   Library  
P0816R0 No More Nested Namespaces in Library Design Titus Winters 2017-10-13 2017-10   Library Evolution  
P0817R0 Core Language Working Group "ready" Issues for the November, 2017 (Albuquerque) meeting William M. Miller 2017-10-16 2017-10   Core  
P0818R0 Core Language Working Group "tentatively ready" Issues for the November, 2017 (Albuquerque) meeting William M. Miller 2017-10-16 2017-10   Core  
P0819R0 Formally Supporting Feature Macros Nicolai Josuttis 2017-10-13 2017-10   Evolution, Library Evolution, Core, Library  
P0820R0 Feedback on P0214R5 Tim Shen 2017-10-13 2017-10   Concurrency, Library Evolution  
P0821R0 Teaching Concepts TS Online Robert Douglas 2017-10-16 2017-10   Evolution  
P0824R0 Summary of SG14 discussion on <system_error>: towards exception-less error handling Arthur O'Dwyer, Charley Bay, Odin Holmes, Michael Wong 2017-10-16 2017-10   SG14, Library Evolution, Library  
P0825R0 A friendlier tuple get Agustín Bergé 2017-10-12 2017-10   Library Evolution  
P0826R0 SFINAE-friendly std::bind Agustín Bergé 2017-10-12 2017-10   Library Evolution  
P0827R0 General-Purpose Constant Value Type John McFarlane, Louis Dionne 2017-10-16 2017-10   SG6, SG14, Library Evolution  
P0829R0 Freestanding proposal Ben Craig 2017-10-14 2017-10   Library Evolution  
P0830R0 Using Concepts and requires in the C++ Standard Library Nicolai Josuttis 2017-10-15 2017-10   Library Evolution, Library  
P0831R0 Keep alias syntax extendable Tomasz Kamiński 2017-10-14 2017-10   Library Evolution  
P0832R0 Module TS Does Not Support Intended Use Case David Sankel 2017-10-14 2017-10   Evolution, Core  
P0834R0 Lifting overload sets into objects Micha_ Dominiak 2017-10-16 2017-10   Evolution  
P0835R0 Adopt SD-6 feature macros into the C++20 working draft Ville Voutilainen 2017-10-16 2017-10   Evolution, Library Evolution  
P0837R0 Ruminations on modular macros Ville Voutilainen 2017-10-16 2017-10   Evolution  
P0838R0 A conditional transform algorithm for C++ Jonathan Coe 2017-10-16 2017-10   Library Evolution  
P0839R0 Recursive Lambdas Richard Smith 2017-10-16 2017-10   Evolution  
P0840R0 Lamguage support for empty objects Richard Smith 2017-10-16 2017-10   Evolution  
P0841R0 Modules at scale Bruno Cardoso Lopes, Adrian Prantl, Duncan P. N. Exon Smith 2017-10-16 2017-10   Evolution  
P0842R0 Unknown Exports by Example Alisdair Meredith 2017-10-16 2017-10   Core  

Video: C++ Concepts TS and Request for Input -- everythingcpp

This video teaches the Concepts syntax and motivation, with a request for viewers to try it out for themselves, to submit back their usage, to help guide a paper for the upcoming Albuquerque meeting.

C++ Concepts Intro: Need Your Input

by everythingcpp

From the article:

C++20 is slated to add most of the contents of the Concepts Technical Specification. Concerns about teach/learn-ability and usage preferences has kept some features from going in. This video covers introductory material on Concepts in C++ as it is in the technical specification. Afterward, I would like to hear from you!

2017-07 post-Toronto mailing available

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

 

2017-07 post-Toronto
N4676 WG21 Telecon Minutes Jonathan Wakely 2017-06-30 2017-07   WG21  
N4677 WG21 / PL22.16 Meeting, Jacksonville, FL, March 12 - 17, 2018 Barry Hedquist 2017-07-07 2017-07   WG21  
N4678 National Body Comments for ISO/IEC PDTS 22277, C++ Extensions for Coroutines Gor Nishanov 2017-07-29 2017-07   WG21  
N4679 Editor's report for the Coroutines TS Gor Nishanov 2017-07-29 2017-07   WG21  
N4680 C++ Extensions for Coroutines TS Document Gor Nishanov 2017-07-30 2017-07   WG21  
N4681 Working Draft, Extensions to C++ for Modules Gabriel Dos Reis 2017-07-14 2017-07   WG21 Adopted 2017-07
N4682 Editor's Report for the Module TS Gabriel Dos Reis 2017-07-31 2017-07   WG21  
N4683 Business Plan and Convener's Report Herb Sutter 2017-07-17 2017-07   WG21  
N4684 Ranges TS Ballot Document Casey Carter 2017-07-31 2017-07   WG21  
N4685 Working Draft, C++ Extensions for Ranges Casey Carter 2017-07-31 2017-07   WG21  
N4686 Editor's Report for the Ranges TS Casey Carter 2017-07-31 2017-07   WG21  
N4687 Working Draft, Standard for Programming Language C++ Note: Richard Smith 2017-07-30 2017-07   WG21  
N4688 Editor's Report -- Working Draft, Standard for Programming Language C++ Richard Smith 2017-07-30 2017-07   WG21  
N4689 Extensions to C++ for Modules Ballot Document Gabriel Dos Reis 2017-07-31 2017-07   WG21  
N4690 2017-07 Toronto Record of Discussion Patrice Roy 2017-08-03 2017-07   WG21  
N4691 WG21 2017-07 Toronto Minutes Patrice Roy 2017-08-03 2017-07   WG21  
N4692 PL22.16 2017-07 Toronto Minutes Jonathan Wakely 2017-08-03 2017-07   WG21  
P0052R5 Generic Scope Guard and RAII Wrapper for the Standard Library Peter Sommerlad, Andrew L. Sandoval 2017-07-13 2017-07 P0052R4 Library  
P0053r6 C++ Synchronized Buffered Ostream Lawrence Crowl, Peter Sommerlad, Nicolai Josuttis, Pablo Halpern 2017-07-15 2017-07 P0053R5 Library Evolution, Library  
P0076R4 Vector and Wavefront Policies Arch Robison, Pablo Halpern, Robert Geva, Clark Nelson, Jens Maurer 2017-07-14 2017-07 P0076R3 Library Evolution, Core Adopted 2017-07
P0096R4 Feature-testing recommendations for C++ Clark Nelson 2017-07-26 2017-07 P0096R3 Feature Testing  
P0124R3 Linux-Kernel Memory Model Paul E. McKenney, Ulrich Weigand, Andrea Parri, Boqun Feng 2017-06-26 2017-07 P0124R2 Concurrency  
P0190R4 Proposal for New memory order consume Definition Paul E. McKenney, Michael Wong, Hans Boehm, Jens Maurer, Jeffrey Yasskin, JF Bastien 2017-07-28 2017-07 P0190R3 Concurrency  
P0214R5 Data-Parallel Vector Types & Operations Matthias Kretz 2017-07-30 2017-07 P0214R4 Library  
P0233R5 Hazard Pointers: Safe Reclamation for Optimistic Concurrency Maged M. Michael, Michael Wong, Paul McKenney, Arthur O'Dwyer, David Hollman, Geoffrey Romer, Andrew Hunter 2017-07-30 2017-07 P0233R4 Concurrency, SG14, Library Evolution  
P0237r8 Wording for fundamental bit manipulation utilities Vincent Reverdy, Robert J. Brunner 2017-07-31 2017-07 P0237r7 Library Evolution  
P0267r6 A Proposal to Add 2D Graphics Rendering and Display to C++, Michael McLaughlin, Herb Sutter, Jason Zink, Guy Davidson 2017-07-30 2017-07 P0267R5 Library Evolution  
P0306R4 Comma elision and comma deletion Thomas Köppe 2017-07-12 2017-07 P0306R3 Core, WG14 Adopted 2017-07
P0329R4 Designated Initialization Wording Tim Shen, Richard Smith 2017-07-12 2017-07 P0329R3 Core  
P0350R1 Integrating simd with parallel algorithms Matthias Kretz 2017-07-30 2017-07 P0350R0 Library Evolution  
P0388R1 Permit conversions to arrays of unknown bound Robert Haberlach 2017-07-15 2017-07 P0388R0 Evolution  
P0428R2 Familiar template syntax for generic lambdas Louis Dionne 2017-07-13 2017-07 P0428R1 Core Adopted 2017-07
P0443R2 A Unified Executors Proposal for C++ Jared Hoberock, Michael Garland, Chris Kohlhoff, Chris Mysen, Carter Edwards, Gordon Brown 2017-07-31 2017-07 P0443R1 Concurrency,  
P0457R1 String Prefix and Suffix Checking Mikhail Maltsev 2017-07-16 2017-07 P0457R0 Library  
P0463R1 endian, Just endian Howard Hinnant 2017-07-13 2017-07 P0463R0 Library Adopted 2017-07
P0534R2 call/cc (call-with-current-continuation): A low-level API for stackful context switching Oliver Kowalke 2017-07-31 2017-07 P0534R1 Library Evolution  
P0541R1 Ranges TS: Post-Increment on Input and Output Iterators Eric Niebler 2017-07-10 2017-07 P0541R0 Library Adopted 2017-07
P0547R2 Ranges TS: Assorted Object Concept Fixes Eric Niebler 2017-07-11 2017-07 P0547R1 Library Adopted 2017-07
P0550R2 Transformation Trait remove_cvref Walter E. Brown 2017-07-17 2017-07 P0550R1 Library  
P0566R2 Proposed Wording for Concurrent Data Structures: Hazard Pointer and Read-Copy-Update (RCU) Michael Wong, Maged M. Michael, Paul McKenney, Geoffrey Romer, Andrew Hunter 2017-07-30 2017-07 P0566R1 Concurrency, SG14, Library Evolution, Library  
P0579R1 Constexpr for <experimental/ranges/iterator> Casey Carter 2017-07-10 2017-07 P0579R0 Library Adopted 2017-07
P0641R1 Resolving Core Issue #1331 (const mismatch with defaulted copy constructor) Daniel Krugler, Botond Ballo 2017-07-24 2017-07 P0641R0 Evolution  
P0643R0 Omnibus paper:Toronto 2017 meeting Michael Wong 2017-06-14 2017-07   WG21  
P0647R1 Floating point value access for std::ratio Peter Sommerlad 2017-07-21 2017-07 P0647R0 Library, Library Evolution, SG6  
P0651R1 Switch the Ranges TS to Use Variable Concepts Eric Niebler 2017-07-10 2017-07 P0651R0 Library Adopted 2017-07
P0653R1 Utility to convert a pointer to a raw pointer Glen Joseph Fernandes 2017-07-21 2017-07 P0653R0 Library Evolution  
P0664R1 Coroutines TS Issues Gor Nishanov 2017-06-18 2017-07 P0664R0 Evolution, Core, Library Adopted 2017-07
P0668R1 Revising the C++ memory model Hans-J. Boehm, Olivier Giroux, Viktor Vafeiades 2017-07-30 2017-07 P0668R0 Concurrency  
P0674R1 Extending make_shared to Support Arrays Peter Dimov, Glen Fernandes 2017-07-12 2017-07 P0674R0 Library Evolution Adopted 2017-07
P0682R1 Repairing elementary string conversions Jens Maurer 2017-07-12 2017-07 P0682R0 Library Adopted 2017-07
P0683R1 Default member initializers for bit-fields Jens Maurer 2017-07-13 2017-07 P0683R0 Evolution, Core Adopted 2017-07
P0696R1 Remove abbreviated functions and template-introduction syntax from the Concepts TS Tom Honermann 2017-07-13 2017-07 P0696R0 Evolution  
P0699R0 C++ Standard Library Issues Resolved Directly In Toronto Marshall Clow 2017-07-14 2017-07   Library Adopted 2017-07
P0702R1 Language support for Constructor Template Argument Deduction Mike Spertus, Jason Merrill 2017-07-14 2017-07 P0702R0 Evolution, Core Adopted 2017-07
P0704R1 Fixing const-qualified pointers to members Barry Revzin 2017-07-10 2017-07 P0704R0 Evolution Adopted 2017-07
P0707R1 Metaclasses: Generative C++ Herb Sutter 2017-07-25 2017-07 P0707R0 SG7  
P0710R1 Core Language Working Group "ready" Issues for the July, 2017 (Toronto) meeting William M. Miller 2017-07-13 2017-07 P0710R0 Core Adopted 2017-07
P0714R0 Identically Named Namespaces and non-Exported Symbols Nathan Sidwell 2017-06-06 2017-07   Evolution, Core  
P0715R0 Exporting Using Directives Nathan Sidwell 2017-06-18 2017-07   Evolution, Core  
P0717R1 Semantic constraint matching for concepts Richard Smith, Andrew Sutton 2017-07-24 2017-07 P0717R0 Posterity  
P0724R0 Merge the Concepts TS Working Draft into the C++20 working draft Ville Voutilainen 2017-06-27 2017-07   WG21  
P0725R0 Remove the requirement for constrained-type-specifiers to be deduced to the same type from the Concepts TS Tom Honermann 2017-07-03 2017-07   Evolution  
P0726R0 Does the Concepts TS Improve on C++17? Duncan P.N. Exon Smith 2017-07-07 2017-07   Evolution  
P0727R0 Core Issue 1299: Temporary objects vs temporary expressions Jens Maurer 2017-07-10 2017-07   Core Adopted 2017-07
P0728R0 Wording for Networking PDTS ballot comment 005 Jonathan Wakely 2017-07-11 2017-07   Networking Adopted 2017-07
P0729R0 Proposed wording for Networking TS NB comment GB 9 Christopher Kohlhoff 2017-07-11 2017-07   Networking Adopted 2017-07
P0730R0 Options for addressing requires-clause syntax ambiguities Hubert S.K. Tong 2017-07-11 2017-07   Evolution  
P0730R1 Options for addressing requires-clause syntax ambiguities Hubert S.K. Tong 2017-07-12 2017-07 P0730R0 Evolution  
P0731R0 Module Interface Imports Nathan Sidwell 2017-07-27 2017-07   Evolution, Core  
P0734R0 Wording Paper, C++ extensions for Concepts Andrew Sutton 2017-07-14 2017-07 N4674 WG21 Adopted 2017-07
P0738R0 I Stream, You Stream, We All Stream for istream_iterator Casey Carter 2017-07-07 2017-07   Library  
P0739R0 Some improvements to class template argument deduction integration into the standard library Mike Spertus, Walter E. Brown, Stephan T. Lavavej 2017-07-13 2017-07   Library Evolution, Library Adopted 2017-07
P0740R0 Ranges TS "Immediate" Issues from the July 2017 (Toronto) meeting Casey Carter 2017-07-14 2017-07   Library Adopted 2017-07
P0742R0 Wording for Networking PDTS ballot comment resolutions Jonathan Wakely 2017-07-14 2017-07   Networking Adopted 2017-07
P0746R0 Wording for Networking PDTS ballot comment 011 (US-10) Jonathan Wakely 2017-07-13 2017-07   Networking Adopted 2017-07
P0747R0 Wording for Networking PDTS ballot comments 026 (GB-15) and 027 (GB-16) Jonathan Wakely 2017-07-14 2017-07   Networking  
P0747R1 Wording for Networking PDTS ballot comment 026 (GB-15), but not 027 (GB-16) Jonathan Wakely 2017-07-14 2017-07 P0747R0 Networking Adopted 2017-07
P0748R0 Wording for Networking PDTS ballot comments on reentrancy Jonathan Wakely 2017-07-14 2017-07   Networking Adopted 2017-07
P0749R0 Namespace Pervasiveness & Modules Nathan Sidwell 2017-07-27 2017-07 P0714R0 Evolution, Core  
P0753R0 Manipulators for C++ Synchronized Buffered Ostream Peter Sommerlad, Pablo Halpern 2017-07-15 2017-07   Library Evolution, Library  
P0754R0 <version> Alan Talbot 2017-07-30 2017-07   Library Evolution  
P0758R0 Implicit conversion traits and utility functions Daniel Krugler 2017-07-30 2017-07   Library Evolution, Library  
P0759R0 fpos Requirements Daniel Krugler 2017-07-28 2017-07   Library  
P0761R0 Executors Design Document Jared Hoberock, Michael Garland, Chris Kohlhoff, Chris Mysen, Carter Edwards, Gordon Brown, Michael Wong 2017-07-31 2017-07   Concurrency  
P0766R0 Fixing small-ish functionality gaps in constraints Ville Voutilainen 2017-07-31 2017-07   Evolution  

 

Trip Report: C++ Standards Meeting in Toronto, July 2017--Botond Ballo

Another report:

Trip Report: C++ Standards Meeting in Toronto, July 2017

by Botond Ballo

From the article:

A couple of weeks ago I attended a meeting of the ISO C++ Standards Committee (also known as WG21) in Toronto, Canada (which, incidentally, is where I’m based). This was the second committee meeting in 2017; you can find my reports on previous meetings here (November 2016, Issaquah) and here (February 2017, Kona). These reports, particularly the Kona one, provide useful context for this post.

What should the ISO C++ Standards Committee be doing?

What should the ISO C++ Standards Committee be doing?


Bjarne Stroustrup


There is a lot of talk within the committee and outside about how to chose what to work on, what processes will work best for handling proposals, and how to maintain a direction for the language.

In January, a group of heads of national delegations submitted a document entitled Operating principles for evolving C++ and the committee constituted a small group of experienced members to try to develop and maintain direction of the standards effort.

In June, Titus Winters and the members of the direction group submitted a follow-up document: C++ Stability, Velocity, and Deployment starting the process of making the principles real. This document was presented at the Toronto meeting to about 80 members in an evening session. It was very well received.

We are working to make the suggestions from those papers concrete to improve the standards process, and eventually help improve C++ and its ISO standard. Here, I would like to direct attention to one part of that document:

Proposal – “Our Promise To Users” a.k.a

“The C++ Programmers’ Bill of Rights.”

We, the ISO C++ Standards Committee, promise to the best of our ability to deliver the
following, assuming user code adheres to the current standard:

  1. Compile-time stability: Every change in behavior in a new version of the standard is detectable by a compiler for the previous version.
  2. Link-time stability: ABI breakage is avoided except in very rare cases, which will be welldocumented and supported by a written rationale.
  3. Compiler performance stability: Changes will not imply significant added compile-time costs for existing code.
  4. Run-time Performance stability: Changes will not imply added run-time costs to existing code.
  5. Progress: Every revision of the standard will offer improved support for some significant programming activity or community.
  6. Simplicity: Every revision of the standard will offer some simplification of some significant programming activity.
  7. Timeliness: The next revision of the standard will be shipped on time according to a published schedule.

Note “to the best of our abilities”. These are guiding principles, rather than executable statements. For example, if I add a function to a header file, the compilation of code that includes that header will slow down imperceptibly. That’s understood and could be argued not to be “existing code” because of the change. Adding enormous amounts of code to a header so that compilation slowed down noticeably
would be another matter.

These are ideals. They are what we would like to see done. I we succeed, most users will be very happy. However, they are not a recipe we could blindly follow to deliver a new standard. As is typical for ideals, they can conflict: there are tensions among the desired goals. This is common: Ideally, we want quality, on-time delivery, and low cost of products, but we know from vast experience that it is very hard to get all three. We want freedom of speech and absence of verbal intimidation, but balancing those two can be very hard. It is the same for the ideals of the “The C++ Bill of Rights”; we want all, but the committee will have to make hard choices.

These are ideals. They are meant to be rather grand statements, rather than nit-picked long sentences with every statement watered down by adjectives and caveats. It will be up to the committee members to interpret the ideals for real design and scheduling problems.

There are just 7 ideals listed and they are quite general. We could add many more, but a laundry list of specifics, would dull the appeal and be impossible to remember in the heat of discussions about direction, what can be delivered when, and specific technical concerns.

So, what do you think? Should the committee formally commit to this? Can it be improved? How? Obviously, we need a discussion within the committee and in the community in general before deciding on anything.