Should Span Be Regular?—Barry Revzin

Do you have an opinion?

Should Span Be Regular?

by Barry Revzin

From the article:

In my last post, I talked about the concept of Westie types (yes, I am trying to make this happen), what Regular means, and which of them are Regular. I went through an explanation for why means for span is not Regular and potentially why it should be. After lots of resulting conversations with several people (thanks Zach Laine, Nicole Mazzuca, Eric Niebler, John Shaw, Tim Song), I thought it was necessary to write a follow up with more details and more argument...

2018-05 pre-Rapperswil mailing available

The full 2018-05 mailing of new standards papers is now available.


WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup Disposition
SD-1 2018 PL22.16/WG21 document list Hal Finkel 2018-05-07 2018-05
2018-05 pre-Rapperswil
N4745 PL22.16/WG21 draft agenda: 4-9 June 2018, Rapperswil, Switzerland John Spicer 2018-04-30 2018-05 WG21
N4746 Working Draft, C++ Extensions for Reflection David Sankel 2018-05-07 2018-05 WG21
N4747 Reflection TS - Editor’s Report David Sankel 2017-05-05 2018-05 WG21
N4748 WG21 telecon meeting: Pre-Rapperswil Herb Sutter 2018-05-06 2018-05 WG21
N4749 Editors' Report - Programming Languages - C++ Richard Smith, Dawn Perchik, Thomas Köppe 2018-04-04 2018-05 WG21
N4750 Working Draft, Standard for Programming Language C++ Richard Smith 2018-05-07 2018-05 N4741 WG21
P0009r6 mdspan: A Non-Owning Multidimensional Array Reference H. Carter Edwards, Bryce Adelstein Lelbach, Daniel Sunderland, David Hollman, Christian Trott, Mauro Bianco, Ben Sander, Athanasios Iliopoulos, John Michopoulos, Daniel Sunderland 2018-05-07 2018-05 P0009R5 Library
P0019r7 Atomic Ref H. Carter Edwards, Hans Boehm, Olivier Giroux, Daniel Sunderland, Mark Hoemmen, David Hollman, Bryce Adelstein Lelbach, Jens Maurer 2018-05-06 2018-05 P0019r6 SG1, Library
P0037R5 Fixed-Point Real Numbers John McFarlane 2018-05-07 2018-05 P0037R4 SG6, SG14, Library Evolution
P0052r8 Generic Scope Guard and RAII Wrapper for the Standard Library Peter Sommerlad, Andrew L. Sandoval 2018-04-24 2018-05 P0052r7 Library
P0124R5 Linux-Kernel Memory Model Paul E. McKenney, Ulrich Weigand, Andrea Parri, Boqun Feng 2018-04-06 2018-05 P0124R4 SG1
P0132R1 Non-throwing container operations Ville Voutilainen 2018-05-07 2018-05 P0132R0 Evolution
P0196R5 Generic none() factories for Nullable types Vicente J. Botet Escribá 2018-05-03 2018-05 P0196R4 Library Evolution
P0319R2 Adding Emplace functions for promise<T>/future<T> (revision 2) Vicente J. Botet Escribá 2018-05-03 2018-05 P0319R1 SG1, Library Evolution
P0340R1 Making std::underlying_type SFINAE-friendly R. "Tim" Song 2018-05-07 2018-05 P0340R0 Library Evolution, Library
P0408R4 Efficient Access to basic_stringbuf’s Buffer Peter Sommerlad 2018-05-01 2018-05 P0408R3 Library
P0429R4 A Standard flatmap Zach Laine 2018-05-05 2018-05 P0429R3 Library
P0443r7 A Unified Executors Proposal for C++ Jared Hoberock, Michael Garland, Chris Kohlhoff, Chris Mysen, H. Carter Edwards, Gordon Brown 2018-05-07 2018-05 P0443r6 SG1, Library Evolution
P0482R3 char8_t: A type for UTF-8 characters and strings (Revision 3) Tom Honermann 2018-05-07 2018-05 P0482R2 Evolution, Library Evolution
P0514R4 Efficient concurrent waiting for C++20 Olivier Giroux 2018-05-03 2018-05 P0514R3 Library Evolution
P0527R1 Implicitly move from rvalue references in return statements David Stone 2017-11-08 2018-05 P0527R0 Core
P0539R4 A Proposal to add wide_int Template Class Igor Klevanets, Antony Polukhin 2018-05-03 2018-05 P0539R3 SG6, Library Evolution
P0540R1 A Proposal to Add split/join of string/string_view to the Standard Library Laurent NAVARRO 2018-04-29 2018-05 P0540R0 Library Evolution
P0566R5 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, David S. Hollman, JF Bastien, Hans Boehm, David Goldblatt, Frank Birbacher 2018-05-06 2018-05 P0566R4 SG1, SG14, Library Evolution, Library
P0572R2 Static reflection of bit fields Alex Christensen 2018-05-06 2018-05 P0572R1 SG7
P0595R1 std::is_constant_evaluated() Richard Smith, Andrew Sutton, Daveed Vandevoorde 2018-05-04 2018-05 P0595R0 Evolution, Library Evolution
P0619R3 Reviewing Deprecated Facilities of C++17 for C++20 Alisdair Meredith, Stephan T. Lavavej, Tomasz Kamiński 2018-05-07 2018-05 P0619R2 Core, Library
P0645R2 Text Formatting Victor Zverovich 2018-04-28 2018-05 P0645R1 Library Evolution, Library
P0660R2 A Cooperatively Interruptible Joining Thread, Rev 2 Nicolai Josuttis, Herb Sutter, Anthony Williams 2018-05-07 2018-05 P0660R1 SG1, Library Evolution, Library
P0664R3 C++ Coroutine TS Issues Gor Nishanov 2018-05-05 2018-05 P0664R2 Evolution, Core, Library Evolution
P0665R1 Allowing Class Template Specializations in Associated Namespaces (revision 1) Tristan Brindle 2018-05-06 2018-05 P0665R0 Evolution
P0666R2 Revised Latches and Barriers for C++20 Olivier Giroux 2018-05-06 2018-05 P0666R1 SG1
P0668R3 Revising the C++ memory model Hans-J. Boehm, Olivier Giroux, Viktor Vafeiades 2018-05-05 2018-05 P0668R2 SG1
P0670R3 Function reflection Matúš Chochlík, Axel Naumann, David Sankel 2018-05-07 2018-05 P0670R2 Core, Library
P0671R2 Self-explanatory Function Arguments Axel Naumann 2018-05-07 2018-05 P0671R1 Evolution
P0709R0 Zero-overhead deterministic exceptions: Throwing values Herb Sutter 2018-05-02 2018-05 SG14
P0736R1 Nameless parameters and unutterable specializations Hubert S.K. Tong 2018-05-05 2018-05 P0736R0 Evolution
P0745R1 Concepts in-place syntax Herb Sutter 2018-04-29 2018-05 P0745R0 Evolution, Core
P0769R1 Add shift to <algorithm> Dan Raviv 2018-02-05 2018-05 P0769R0 Library
P0772R1 Execution Agent Local Storage Nat Goodspeed, Michael Wong, Paul McKenney, Jared Hoberock, H. Carter Edwards, Tony Tye, Alex Voicu, Gordon Brown, Mark Hoemmen 2018-05-07 2018-05 P0772R0 SG1
P0784R2 Standard containers and constexpr Louis Dionne, Richard Smith, Nina Ranns, Daveed Vandevoorde 2018-05-05 2018-05 P0784R1 Evolution, Library Evolution
P0784R3 More constexpr containers Louis Dionne, Richard Smith, Nina Ranns, Daveed Vandevoorde 2018-05-04 2018-05 P0784R2 Evolution, Library Evolution
P0788R2 Standard Library Specification in a Concepts and Contracts World Walter E. Brown 2018-05-05 2018-05 P0788R1 Library
P0789R3 Range Adaptors and Utilities Eric Niebler 2018-05-06 2018-05 P0789R2 Library
P0792R2 function_ref: a non-owning reference to a Callable Vittorio Romeo 2018-05-06 2018-05 P0792R1 Library Evolution
P0796R2 Supporting Heterogeneous & Distributed Computing Through Affinity Gordon Brown, Ruyman Reyes, Michael Wong, H. Carter Edwards, Thomas Rodgers, Mark Hoemmen 2018-05-07 2018-05 P0796R1 SG1, SG14
P0829R2 Freestanding Proposal Ben Craig 2017-10-14 2018-05 P0829R1 SG14, Library Evolution
P0836R1 Introduce Parallelism to the Ranges TS Gordon Brown, Christopher Di Bella, Michael Haidl, Toomas Remmelg, Ruyman Reyes, Michel Steuwer, Michael Wong 2018-05-07 2018-05 P0836R0 SG1, SG9, SG14, Library Evolution
P0844R0 Type functions and beyond J. Monnon 2018-02-26 2018-05 SG7, SG8, Evolution
P0860R1 Atomic Access Property for mdspan Dan Sunderland, Christian Trott, H. Carter Edwards 2018-05-06 2018-05 P0860R0 SG1, Library Evolution
P0868R2 Selected RCU Litmus Tests Paul E. McKenney, Alan Stern, Andrew Hunter, Jade Alglave, Luc Maranget 2018-02-09 2018-05 P0868R1 SG1
P0876R2 fiber_context - fibers without scheduler Oliver Kowalke, Nat Goodspeed 2018-05-06 2018-05 P0876R1 SG1
P0880R1 Numbers interaction Igor Klevanets, Antony Polukhin 2018-05-04 2018-05 P0880R0 SG6, Library Evolution
P0881R1 A Proposal to add stack trace library Alexey Gorgurov, Antony Polukhin 2018-04-19 2018-05 P0881R0 Library Evolution
P0892R1 explicit(bool) Barry Revzin, Stephan T. Lavavej 2018-03-30 2018-05 P0892R0 Evolution
P0893R1 Chaining Comparisons Barry Revzin, Herb Sutter 2018-04-28 2018-05 P0893R0 Evolution
P0894R0 `realloc()` for C++ Victor Dyachenko 2018-01-10 2018-05 Library Evolution
P0896R1 Merging the Ranges TS Eric Niebler, Casey Carter 2018-05-06 2018-05 P0896R0 Library Evolution, Library
P0898R2 Standard Library Concepts Casey Carter, Eric Niebler 2018-05-06 2018-05 P0898R1 Library
P0903R2 Define basic_string_view(nullptr) Ashley Hedberg, Titus Winters, Jorg Brown 2018-05-07 2018-05 P0903R1 Evolution, Library Evolution, Library
P0907R2 Signed Integers are Two’s Complement JF Bastien 2018-04-01 2018-05 P0907R1 Evolution
P0912R1 Merge Coroutines TS into C++20 working draft Gor Nishanov 2018-05-05 2018-05 P0912R0 WG21
P0917R1 Making operator?: overloadable Matthias Kretz 2018-05-06 2018-05 P0917R0 Evolution
P0921R2 Standard Library Compatibility Titus Winters, Ashley Hedberg 2018-05-06 2018-05 P0921R1 Evolution, Library Evolution
P0923R1 Modules:Dependent ADL Nathan Sidwell 2018-05-04 2018-05 P0923R0 Evolution
P0933R0 Runtime type introspection with std::exception ptr Aaryaman Sagar 2018-02-07 2018-05 Library Evolution
P0940R1 Concurrency TS is growing: Concurrent Utilities and Data Structures Michael Wong, Olivier Giroux 2018-05-07 2018-05 P0940R0 SG1, Library Evolution, Library
P0941R1 Integrating feature-test macros into the C++ WD Ville Voutilainen 2018-05-04 2018-05 P0941R0 Evolution, Library Evolution
P0957R1 PFA: A Generic, Extendable and Efficient Solution for Polymorphic Programming Mingxin Wang 2018-04-18 2018-05 P0957R0 SG7, SG9, Evolution, Core, Library Evolution, Library
P0958R1 Networking TS changes to support proposed Executors TS Christopher Kohlhoff 2018-05-06 2018-05 P0958R0 SG1, Library Evolution
P0960R1 Allow initializing aggregates from a parenthesized list of values Ville Voutilainen 2018-05-02 2018-05 P0960R0 Evolution
P0964R1 Finding the right set of traits for simd<T> Matthias Kretz 2018-05-07 2018-05 P0964R0 Library Evolution
P0970R1 Better, Safer Range Access Customization Points Eric Niebler 2018-05-06 2018-05 P0970R0 Library Evolution
P0972R0 <chrono> zero(), min(), and max() should be noexcept Billy Robert O'Neal III 2018-02-28 2018-05 Library Evolution, Library
P0977R0 Remember the Vasa! Bjarne Stroustrup 2018-03-06 2018-05 WG21
P0988R0 Ruminations on 2D graphics in the C++ International Standard Guy Davidson 2018-04-30 2018-05 WG21
P1007R0 std::assume_aligned Timur Doumler, Chandler Carruth 2018-05-04 2018-05 Library Evolution, Library
P1008R0 Prohibit aggregate types with user-declared constructors Timur Doumler, Arthur O’Dwyer, Richard Smith, Howard E. Hinnant 2018-05-07 2018-05 Evolution, Core
P1010R0 Container support for implicit lifetime types Mark Zeren, Chris Kennelly 2018-05-06 2018-05 Library Evolution, Library
P1016R0 A few additional type manipulation utilities Vincent Reverdy 2018-05-06 2018-05 Library Evolution
P1017R0 Executors should be variadic Hartmut Kaiser, John Biddiscombe 2018-05-06 2018-05 SG1
P1019R0 Integrating Executors with Parallel Algorithms Jared Hoberock 2018-05-07 2018-05 SG1
P1020R0 Smart pointer creation with default initialization Glen Joseph Fernandes, Peter Dimov 2018-04-08 2018-05 Library Evolution
P1021R0 Extensions to Class Template Argument Deduction Mike Spertus 2018-05-07 2018-05 Evolution
P1022R0 Material for 2018 JAX Discussions of Hazard Pointer and Read-Copy-Update (RCU) Michael Wong, Maged M. Michael, Paul McKenney, Geoffrey Romer, Andrew Hunter, Arthur O'Dwyer, David S. Hollman, JF Bastien, Hans Boehm, David Goldblatt 2018-04-20 2018-05 SG1, SG14, Library Evolution, Library, Library
P1023R0 constexpr comparison operators for std::array Tristan Brindle 2018-05-06 2018-05 Library Evolution
P1024R0 Usability Enhancements for std::span Tristan Brindle 2018-05-06 2018-05 Library Evolution
P1025R0 Update The Reference To The Unicode Standard Steve Downey 2018-04-23 2018-05 SG16, Core, Library
P1026R0 A call for a Data Persistence (iostream v2) study group Niall Douglas 2018-05-06 2018-05 Library Evolution
P1028R0 SG14 status_code and standard error object for P0709 Zero-overhead deterministic exceptions Niall Douglas 2018-05-06 2018-05 Library Evolution
P1029R0 SG14 [[move_relocates]] Niall Douglas 2018-05-06 2018-05 Evolution
P1030R0 std::filesystem::path_view Niall Douglas 2018-05-06 2018-05 Library Evolution
P1031R0 Low level file i/o library Niall Douglas 2018-05-06 2018-05 Library Evolution
P1032R0 Misc constexpr bits Antony Polukhin 2018-05-03 2018-05 Library Evolution
P1033R0 Rangify the uninitialised memory algorithms! Casey Carter, Christopher Di Bella 2018-05-06 2018-05 Library Evolution
P1035R0 Input range adaptors Christopher Di Bella 2018-05-07 2018-05 Library Evolution
P1037R0 Deep Integration of the Ranges TS Eric Niebler, Casey Carter 2018-05-06 2018-05 Library Evolution
P1040R0 std::embed JeanHeyd Meneide 2018-05-07 2018-05 SG15, Evolution, Library Evolution
P1041R0 Make char16_t/char32_t string literals be UTF-16/32 Martinho Fernandes 2018-04-24 2018-05 Evolution
P1043R0 Narrow contracts in string_view versus P0903R1 Andrzej Krzemieński, Nevin Liber 2018-05-07 2018-05 Evolution, Library Evolution, Library
P1044R0 std::async() in an Executors World Thomas Rodgers, H. Carter Edwards, Mark Hoemmen 2018-05-04 2018-05 SG1, Library Evolution
P1045R0 constexpr Function Parameters David Stone 2018-04-29 2018-05 Evolution
P1046R0 Automatically Generate More Operators David Stone 2018-04-28 2018-05 Evolution
P1048R0 A proposal for a type trait to detect scoped enumerations Juan Alday 2018-05-01 2018-05 Library Evolution
P1050R0 Fractional Numeric Type John McFarlane 2018-05-07 2018-05 SG6, Library Evolution
P1051R0 std::experimental::expected LWG design issues Vicente J. Botet Escribá 2018-05-03 2018-05 Library Evolution
P1052R0 Modules, Macros, and Build Systems Boris Kolpackov 2018-05-02 2018-05 SG15, Evolution
P1053R0 Future-proofing continuations for executors Lee Howes, Eric Niebler 2018-05-06 2018-05 SG1, Library Evolution
P1054R0 A Unified Futures Proposal for C++ Lee Howes, Bryce Adelstein Lelbach, David S. Hollman, Michał Dominiak 2018-05-07 2018-05 SG1
P1055R0 A Modest Executor Proposal Kirk Shoop, Eric Niebler, Lee Howes 2018-04-26 2018-05 Library Evolution
P1056R0 Add coroutine task type Lewis Baker, Gor Nishanov 2018-05-05 2018-05 SG1
P1059R0 Adapting Asio to use std::expected Thomas Rodgers 2018-05-06 2018-05 Library Evolution
P1061R0 Structured Bindings can introduce a Pack Barry Revzin, Jonathan Wakely 2018-05-01 2018-05 Evolution
P1062R0 Diet Graphics Bryce Adelstein Lelbach, Olivier Giroux, Zach Laine, Corentin Jabot, Vittorio Romeo 2018-05-07 2018-05 WG21
P1063R0 Core Coroutines Geoff Romer, James Dennett, Chandler Carruth 2018-05-06 2018-05 Evolution
P1064R0 Allowing Virtual Function Calls in Constant Expressions Peter Dimov, Vassil Vassilev 2018-05-04 2018-05 Evolution
P1066R0 How to catch an exception_ptr without even try-ing Mathias Stearn 2018-05-07 2018-05 Evolution, Library Evolution
P1067R0 C++ Dependency Management: Package Consumption vs Development Boris Kolpackov 2018-05-04 2018-05 SG15
P1068R0 Vector API for random number generation Ilya Burylov, Alexey Kukanov, Ruslan Arutyunyan, Andrey Nikolaev, Pablo Halpern 2018-05-07 2018-05 SG1
P1070R0 SG5: Transactional Memory (TM) Meeting Minutes 2018/04/09 Michael Wong 2018-05-07 2018-05 SG5
P1071R0 SG14: Low Latency Meeting Minutes 2018/04/11- 2018/05/02 Michael Wong 2018-05-07 2018-05 SG14
P1072R0 Default Initialization for basic_string Chris Kennelly, Mark Zeren 2018-05-04 2018-05 SG16, Library Evolution, Library
P1073R0 constexpr! functions Richard Smith, Andrew Sutton, Daveed Vandevoorde 2018-05-04 2018-05 Evolution
P1074R0 CWG defect Defined Behavior of Invalid Pointers Maged Michael, David Goldblatt, Michael Wong, Paul McKenney 2018-05-07 2018-05 SG1, Core
P1076R0 Editorial clause reorganization Jens Maurer 2018-05-05 2018-05 Core, Library
P1077R0 Allowing Virtual Destructors to be “Trivial” Peter Dimov 2018-05-04 2018-05 Evolution
P1079R0 A minimal solution to the concepts syntax problems Bjarne Stroustrup 2018-05-06 2018-05 Evolution
P1080R0 SG16: Unicode meeting summaries 2018/03/28 - 2018/04/25 Tom Honermann 2018-05-06 2018-05 SG16
P1081R0 On empty structs in the standard library Vincent Reverdy, Collin Gress 2018-05-07 2018-05 Library Evolution
P1082R0 C++ Standard Library Issues to be moved in Rapperswil Marshall Clow 2018-05-06 2018-05 WG21
P1083R0 Move resource_adaptor from Library TS to the C++ WP Pablo Halpern 2018-05-06 2018-05 Library Evolution
P1084R0 Today's return-type-requirements Are Insufficient Walter E. Brown, Casey Carter 2018-05-06 2018-05 Evolution
P1085R0 Should Span be Regular? Tony Van Eerd 2018-05-04 2018-05 Evolution
P1086R0 Natural Syntax: Keep It Simple Gabriel Dos Reis 2018-05-07 2018-05 Evolution
P1087R0 Modules for Standard C++ Gabriel Dos Reis, Richard Smith 2018-05-07 2018-05 Evolution
P1089R0 Sizes Should Only span Unsigned Robert Douglas, Nevin Liber, Marshall Clow 2018-05-06 2018-05 Library Evolution
P1090R0 Aggregate initialization in the presence of deleted constructors Ville Voutilainen 2018-05-07 2018-05 Evolution
P1091R0 Extending structured bindings to be more like variable declarations Nicolas Lesser 2018-05-07 2018-05 Evolution
P1093R0 Is undefined behaviour preserved? Andrew Bennieston, Jonathan Coe, Daven Gahir, Thomas Russell 2018-05-07 2018-05 SG12, Evolution, Library Evolution
P1094R0 Nested Inline Namespaces Alisdair Meredith 2018-05-07 2018-05 Evolution

Non-Ownership and Generic Programming and Regular types, oh my!==Barry Revzin

Do you know about it?

Non-Ownership and Generic Programming and Regular types, oh my!

by Barry Revzin

From the article:

This post is about a specific collection of types in the C++ core language and standard library. I am not sure of a good way to name this collection, and some terms that come to mind come with their own baggage, so I’m going to for now group them together under an umbrella that is clearly widely unrelated to programming and call them Westie types (because, like my dog, they are awesome yet enigmatic).

IO2D demo: CPULoad—Michael Kazakov

A walkthrough of the CPULoad demo from the 2D Graphics proposal:

IO2D demo: CPULoad

by Michael Kazakov

From the article:

In my humble opinion, the 2D graphics proposal might bring C++ a solid foundation for visualization support. It’s powerful enough to build complex structures on top of it – here I can refer to the sample SVG renderer as an example. At the same time, it’s not built around some particular low-level graphics API (i.e OpenGL/DirectX/Mantle/Metal/Vulkan), which come and go over time (who remembers Glide?). What is also very important about the proposal is its implementability – I wrote the CoreGraphics backend in ~3 months on a part-time basis. It can be assumed that writing a theoretical Direct2D backend might take about the same time. While it’s easy to propose “just” a support for PostScript, SVG or even HMTL5, the practical implementability of such extensive standards is very doubtful. Having said that, I do think that the proposal, while being a valid direction, is far from being perfect and needs a lot of polishing.

March 2018 ISO C++ Meeting Trip Report (SG1: Concurrency and Parallelism)—Thomas Rodgers

The future is still getting closer.

March 2018 ISO C++ Meeting Trip Report (SG1: Concurrency and Parallelism)

by Thomas Rodgers

From the article:

This year’s Winter ISO C++ Standard Committee meeting was held in March in Jacksonville, Florida. A number of larger features, for which there is substantial interest but which are also difficult to get right, were discussed:

  • Concepts, along with Concept types from the Ranges TS; see P0898 and n4685
  • Modules; see n4689
  • Coroutines; see n4723
  • Networking; see n4711
  • Executors; see p0443

2018-04 post-Jacksonville mailing available

The full 2018-04 mailing of new standards papers is now available.


2018-04 post-Jacksonville
N4729 WG21 telecon meeting: Modules TS publication Jonathan Wakely 2018-02-01 2018-04 WG21
N4730 WG21 pre-Jacksonville telecon minutes Jonathan Wakely 2018-03-02 2018-04 WG21
N4731 SC22 WG14 Liaison Report (C Standard) Barry Hedquist 2018-03-05 2018-04 WG21
N4732 WG21 2018-03 Jacksonville Minutes Patrice Roy 2018-04-02 2018-04 WG21
N4734 Working Draft, C ++ Extensions for Networking Jonathan Wakely 2018-04-04 2018-04 N4711 WG21
N4735 Networking TS - Editor's Report Jonathan Wakely 2018-04-04 2018-04 WG21
N4736 Working Draft, C ++ Extensions for Coroutines Gor Nishanov 2018-03-31 2018-04 N4723 WG21
N4737 Editor's report for the Coroutines TS Gor Nishanov 2018-03-27 2018-04 WG21
N4738 C++ Standardization Committee Meeting, HSR Rapperswil – Latest Info Peter Sommerlad 2018-04-01 2018-04 WG21
N4739 Jacksonville 2018 LEWG Summary Titus Winters 2018-03-27 2018-04 WG21
N4740 N4740 Editors' Report - Programming Languages - C++ Richard Smith 2018-04-02 2018-04 WG21
N4741 Working Draft, Standard for Programming Language C++ Richard Smith 2018-04-02 2018-04 N4727 WG21
N4742 Working Draft, Technical Specification for C++ Extensions for Parallelism Version 2 Jared Hoberock 2018-04-02 2018-04 N4725 WG21
N4743 Parallelism TS Editor’s Report, post-Jacksonville mailing Jared Hoberock 2018-04-02 2018-04 WG21
N4744 Programming Languages - Technical Specification for C++ Extensions for Parallelism Version 2 Jared Hoberock 2018-04-02 2018-04 WG21
P0052r7 Generic Scope Guard and RAII Wrapper for the Standard Library Peter Sommerlad, Andrew L. Sandoval 2018-03-26 2018-04 P0052r6 Library
P0122r7 span: bounds-safe views for sequences of objects Neil MacIntosh, Stephan T. Lavavej 2018-03-16 2018-04 P0122r6 Library Adopted 2018-03
P0194r6 Static reflection Matus Chochlik, Axel Naumann, David Sankel 2018-03-16 2018-04 P0194R5 Core, Library Adopted 2018-03
P0214r9 Data-Parallel Vector Types & Operations Matthias Kretz 2018-03-16 2018-04 P0214r8 Library Adopted 2018-03
P0318R1 unwrap_ref_decay and unwrap_reference Vicente J. Botet Escribá 2018-03-30 2018-04 P0318R0 Library
P0323r6 std::expected Vicente Botet, JF Bastien 2018-04-02 2018-04 P0323R5 Library
P0339R4 polymorphic_allocator<> as a vocabulary type Pablo Halpern, Dietmar Kühl 2018-04-02 2018-04 P0339R3 Library
P0355r7 Extending <chrono> to Calendars and Time Zones Howard E. Hinnant, Tomasz Kamiński 2018-03-16 2018-04 P0355R6 Library Adopted 2018-03
P0388R2 Permit conversions to arrays of unknown bound Robert Haberlach 2018-03-09 2018-04 P0388R1 Evolution
P0443r6 A Unified Executors Proposal for C++ Jared Hoberock, Michael Garland, Chris Kohlhoff, Chris Mysen, Carter Edwards, Gordon Brown 2018-04-02 2018-04 P0443R5 SG1, Library Evolution
P0466R2 Layout-compatibility and Pointer-interconvertibility Traits Lisa Lippincott 2018-03-29 2018-04 P0466R1 Evolution, Library Evolution, Library
P0479R5 Proposed wording for likely and unlikely attributes Clay Trychta 2018-03-16 2018-04 P0479R4 SG14, Core Adopted 2018-03
P0482R2 char8_t: A type for UTF-8 characters and strings Tom Honermann 2018-04-01 2018-04 P0482R1 Evolution, Library Evolution
P0528R2 The Curious Case of Padding Bits, Featuring Atomic Compare-and-Exchange JF Bastien, Michael Spencer 2018-03-16 2018-04 P0528R1 Core
P0542R4 Support for contract based programming in C++ J. Daniel Garcia 2018-04-02 2018-04 P0542R3 Evolution, Core
P0551R3 Thou Shalt Not Specialize std Function Templates! Walter E. Brown 2018-03-16 2018-04 P0551R2 Library Adopted 2018-03
P0561R4 An RAII Interface for Deferred Reclamation Geoff Romer, Andrew Hunter 2018-03-21 2018-04 P0561R3 SG1, Library
P0591R3 Utility functions to implement uses-allocator construction Pablo Halpern 2018-04-02 2018-04 P0591R2 Library
P0602R2 variant and optional should propagate copy/move triviality Zhihao Yuan 2018-03-12 2018-04 P0602R1 Library
P0634R3 Down with typename! Nina Ranns, Daveed Vandevoorde 2018-03-14 2018-04 P0634R2 Core Adopted 2018-03
P0664R2 C++ Coroutine TS Issues Gor Nishanov 2018-03-08 2018-04 P0664R1 Evolution, Library Evolution, Core
P0722R3 Efficient sized delete for variable sized classes Richard Smith, Andrew Hunter 2018-03-17 2018-04 P0722R2 Core, Library
P0732R1 Class Types in Non-Type Template Parameters Jeff Snyder, Louis Dionne 2018-03-30 2018-04 P0732R0 Evolution
P0753R2 Manipulators for C++ Synchronized Buffered Ostream Peter Sommerlad, Pablo Halpern 2018-03-16 2018-04 P0753R1 Library Adopted 2018-03
P0754R2 <version> Alan Talbot 2018-03-13 2018-04 P0754R1 Library Adopted 2018-03
P0780R2 Allow pack expansion in lambda init-capture Barry Revzin 2018-03-14 2018-04 P0780R1 Evolution Adopted 2018-03
P0782R1 Constraining Concepts Overload Sets Adam David Alan Martin, Erich Keane 2018-03-31 2018-04 P0782R0 Evolution
P0806R1 Deprecate implicit capture of this via [=] Thomas Köppe 2018-04-02 2018-04 P0806R0 Core
P0809R0 Comparing Unordered Containers Titus Winters 2017-10-12 2018-04 Library Evolution, Library Adopted 2018-03
P0811R2 Well-behaved interpolation for numbers and pointers S. Davis Herring 2018-03-29 2018-04 P0811R1 Library
P0820R3 Feedback on P0214 Tim Shen 2018-03-29 2018-04 P0820R2 Library Evolution
P0840R2 Language support for empty objects Richard Smith 2018-03-12 2018-04 P0840R1 Core Adopted 2018-03
P0858R0 Constexpr iterator requirements Antony Polukhin 2017-11-11 2018-04 Library Evolution, Library
P0887R1 The identity metafunction Timur Doumler 2018-03-18 2018-04 P0887R0 Library
P0888R0 C++ Standard Library Issues to be moved in Jacksonville Marshall Clow 2018-02-12 2018-04 WG21
P0898R1 Standard Library Concepts Casey Carter 2018-04-02 2018-04 P0898R0 Library Evolution, Library
P0903R1 Define basic_string_view(nullptr) Ashley Hedberg 2018-02-16 2018-04 P0903R0 Library Evolution, Library
P0905R1 Symmetry for spaceship Tomasz Kamiński, Herb Sutter, Richard Smith 2018-03-16 2018-04 P0905R0 Evolution, Library Evolution Adopted 2018-03
P0906R1 Improvement suggestions for the Modules TS Jens Maurer 2018-04-02 2018-04 P0906R0 Core
P0907R1 Signed Integers are Two’s Complement JF Bastien 2018-04-01 2018-04 P0907R0 Evolution
P0911R1 Rebase the Coroutines TS onto the C++17 Standard Gor Nishanov 2018-03-15 2018-04 P0911R0 Core, Library Adopted 2018-03
P0913R1 Add symmetric coroutine control transfer Gor Nishanov 2018-03-15 2018-04 P0913R0 Evolution Adopted 2018-03
P0914R1 Add parameter preview to coroutine promise constructor Gor Nishanov 2018-03-15 2018-04 P0914R0 Evolution Adopted 2018-03
P0918R1 More simd<> Operations Tim Shen 2018-03-29 2018-04 P0918R0 SG1, Library Evolution
P0919R1 Heterogeneous lookup for unordered containers Mateusz Pusz 2018-04-01 2018-04 P0919R0 Library
P0929R1 Checking for abstract class types Jens Maurer 2018-03-24 2018-04 P0929R0 Core
P0943R1 Support C atomics in C++ Hans-J. Boehm 2018-03-30 2018-04 P0943R0 Library Evolution
P0947R1 Another take on Modules Richard Smith 2018-03-06 2018-04 P0947R0 Evolution
P0961R1 Relaxing the structured bindings customization point finding rules Ville Voutilainen 2018-03-14 2018-04 P0961R0 Evolution Adopted 2018-03
P0962R1 Relaxing the range-for loop customization point finding rules Ville Voutilainen 2018-03-14 2018-04 P0962R0 Evolution Adopted 2018-03
P0966R1 string::reserve Should Not Shrink Mark Zeren, Andrew Luo 2018-02-08 2018-04 P0966R0 Library Evolution, Library Adopted 2018-03
P0968R0 Core Language Working Group "tentatively ready" Issues for the March, 2018 (Jacksonville) meeting William M. Miller 2018-03-12 2018-04 WG21 Adopted 2018-03
P0969R0 Allow structured bindings to accessible members Timur Doumler 2018-03-14 2018-04 Evolution, Core Adopted 2018-03
P0970R0 Better, Safer Range Access Customization Points Eric Niebler 2018-04-01 2018-04 Library Evolution
P0973R0 Coroutines TS Use Cases and Design Issues Geoff Romer, James Dennett 2018-03-23 2018-04 Evolution
P0974R0 A Function Returning Whether An Underlying Type Value Is a Valid Enumerator of a Given Enumeration Jonathan Ringle 2018-03-30 2018-04 Library Evolution, Library
P0975R0 Impact of coroutines on current and upcoming library facilities Gor Nishanov 2018-03-10 2018-04 SG1, SG14, Evolution, Library Evolution, Library
P0976R0 The Evils of Paradigms Bjarne Stroustrup 2018-03-06 2018-04 WG21
P0978R0 A Response to "P0973r0: Coroutines TS Use Cases and Design Issues" Gor Nishanov 2018-03-31 2018-04 Evolution
P0981R0 Halo: coroutine Heap Allocation eLision Optimization: the joint response Richard Smith, Gor Nishanov 2018-03-18 2018-04 Evolution
P0982R0 Weaken Release Sequences Hans-J. Boehm, Olivier Giroux, Viktor Vafeiades 2018-04-01 2018-04 SG1, Core
P0983R0 Plan of Record for Making C++ Modules Available in C++ Standards Gabriel Dos Reis, Richard Smith 2018-04-01 2018-04 WG21
P0984R0 All (*)()-Pointers Replaced by Ideal Lambdas Peter Sommerlad 2018-04-01 2018-04 Evolution, Library Evolution
P0985R0 LWG Chair post-meeting report Marshall Clow 2017-03-31 2018-04 WG21
P0986R0 Comparison of Modules Proposals Richard Smith, David Jones 2018-03-09 2018-04 Evolution
P0987R0 polymorphic_allocator<byte> instead of type-erasure Pablo Halpern 2018-04-02 2018-04 Library
P0989R0 Standardizing Extended Integers Tony Van Eerd 2018-04-01 2018-04 Evolution
P0990R0 Rebuttal of Implementation Concerns for Bit Entanglement Tony Van Eerd 2018-04-01 2018-04 Evolution
P0991R0 Comparison of Stackful Coroutine Proposals Detlef Vollmann 2018-03-12 2018-04 SG1
P0992R0 Translation and evaluation Andrew Sutton 2018-04-02 2018-04 SG7
P0993R0 Value-based Reflection Andrew Sutton, Herb Sutter 2014-04-02 2018-04 SG7
P0994R0 String View Conversion for Function Arguments Adam David Alan Martin, Jason Carey 2018-03-20 2018-04 Library Evolution
P0995R0 Improving atomic_flag JF Bastien, Olivier Giroux, Andrew Hunter 2018-03-17 2018-04 SG1, Library Evolution
P0996R1 Rebase Library Fundamentals TS on C++17 Alisdair Meredith 2018-03-16 2018-04 P0996R0 Library Evolution, Library Adopted 2018-03
P0999R0 More Natural Arithmetic in C++ James Dennett 2018-­04-­01 2018-04 SG6, SG12, Evolution, Core
P1000R0 C++ IS schedule Herb Sutter 2018-04-02 2018-04 WG21
P1001R0 Target Vectorization Policies from Parallelism V2 TS to C++20 Alisdair Meredith 2018-03-14 2018-04 SG1, Library Evolution
P1001R1 Target Vectorization Policies from Parallelism V2 TS to C++20 Alisdair Meredith 2018-03-16 2018-04 P1001R0 SG1, Library Evolution
P1002R0 Try-catch blocks in constexpr functions Louis Dionne 2018-04-01 2018-04 Evolution
P1003R0 C++ Standard Library Issues Resolved Directly In Jacksonville Marshall Clow 2018-03-16 2018-04 WG21 Adopted 2018-03
P1004R0 Making std::vector constexpr Louis Dionne 2018-04-01 2018-04 Library Evolution
P1005R0 namespace std { namespace fs = filesystem; } Bryce Adelstein Lelbach, S. Davis Herring 2018-03-16 2018-04 SG3, Library Evolution, Library
P1006R0 Constexpr in std::pointer_traits Louis Dionne 2018-04-01 2018-04 Library Evolution
P1011R0 Constant Pointer View - std::as_const Strikes Back! Adam David Alan Martin 2018-03-20 2018-04 Library Evolution
P1013R0 Explicit concept expressions Thomas Köppe, Hubert S.K. Tong 2018-04-02 2018-04 Evolution
P1014R0 A Unit Type for C++ Andrew Sutton, Nevin Liber 2018-04-01 2018-04 Evolution
P1015R0 WG21 2018-03 Jacksonville Record of Discussion Patrice Roy 2018-04-02 2018-04 WG21
P1018R0 Evolution status after Jacksonville 2018 Ville Voutilainen 2018-03-18 2018-04 WG21

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

Lots of things happened.

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

by Herb Sutter

From the article:

On Saturday March 17, the ISO C++ committee completed its winter meeting in Jacksonville, Florida, USA, hosted with thanks by the Standard C++ Foundation and Perennial. We had some 140 people at the meeting, representing 8 national bodies. As usual, we met for six days Monday through Saturday, including all evenings...

ISO C++ Committee – Jacksonville 2018, trip report—Timur Doumler

Timur Doumler has joined the CLion team in fall 2017. He continues to be active on the C++ Committee, as it fits well into JetBrains' strategy: our C++ team would like to be actively involved in the committee and feed our experience with implementing language features in our C++ tools back into the ongoing work on the evolution of the C++ language.

ISO C++ Committee – Jacksonville 2018 trip report

by Timur Doumler

From the article:

From the 12th to the 17th of March 2018, I travelled to Jacksonville, Florida, to attend the ISO C++ Committee meeting as JetBrains’ representative on the committee. I decided to focus on Evolution Working Group and cover the most relevant discussions concerning language evolution:

  • Day 1: Structured bindings and concepts
  • Day 2: Let’s break some code!
  • Day 3: Coroutines and Modules
  • Day 4: Compile-time programming
  • Day 5: New Tooling Study Group
  • Day 6: Plenary

Dependency Management For C++—Hans Klabbers

Dependency management is a missing piece in the C++ eco system.

Dependency Management For C++

by Hans Klabbers

About the article

The writer took part in the developer survey and followed up on the outcome. Depenendency management is seen as a missing piece in the C++ standard. The article is written as a response on a tweet by Bryce Lelbach and an article on medium by Corentin. It describes the author's ideas for dependency management. 

trip report: first ISO C++ meeting experience—Vittorio Romeo

This trip report covers the author's first ISO C++ meeting experience. Vittorio talks about the most interesting interactions and papers discussed in Jacksonville, while also sharing some of his thoughts regarding controversial topics such as modules and 2D graphics.

trip report: first ISO C++ meeting experience

By Vittorio Romeo

From the article:

I'm back in London from Jacksonville, where I attended my first ISO C++ meeting. Apart from the long flights and long working hours, it has been a very enjoyable experience for multiple reasons: [...]

[...] almost every interaction when debating a paper was very well motivated, and I found myself thinking "that's a very good point" very often, even when two conflicting opinions were being stated one right after the other [...]