August 2019

Overload 152 is now available

ACCU’s Overload journal of August 2019 is out. It contains the following C++ related articles.

Overload 152 is now available

From the journal:

Reactive or Proactive.
Reactive systems are all the rage. Frances Buontempo compares them with a proactive approach.

A Low-Latency Logging Framework.
Logging can be a bottleneck in systems. Wesley Maness and Richard Reich demonstrate a low-latency logging framework that avoids common problems.

Empty Scoped Enums as Strong Aliases for Integral Types.
Scoped enums have many advantages. Lukas Böger demonstrates their use as strong types of numbers.

C++ Reflection for Python Binding.
There are various approaches to generating Python bindings in C++. Russell Standish shows how Classdesc can be used to achieve this.

Trip Report: Italian C++ 2019.
Milan held Italy’s largest C++ conference. Hans Vredeveld reports back.

Many people are risk-averse. Chris Oldwood considers this position – in verse.

2019-08 post-Cologne mailing available

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


N4823 Cologne 2019 LEWG Summary Titus Winters 2019-07-25 2019-08   WG21  
N4824 Business plan and convener's report Herb Sutter 2019-07-29 2019-08   WG21  
N4825 2020 Varna Meeting Information Vassil Vassilev, Mark Zeren, Vassil Keremidchiev, Anton Stoyanov 2019-08-09 2019-08   WG21  
N4826 WG21 2019-07 Cologne Minutes of Meeting Nina Dinka Ranns 2019-08-09 2019-08   WG21  
N4829 Editors' Report - Programming Languages - C++ Richard Smith 2019-08-15 2019-08   WG21  
N4830 Committee Draft, Standard for Programming Language C++ Richard Smith 2019-08-15 2019-08 N4820 WG21  
P0323R9 std::expected JF Bastien, Vicente Botet 2019-08-03 2019-08 P0323R8 Library  
P0325R4 to_array from LFTS with updates Zhihao Yuan 2019-07-29 2019-08 P0325R3 Library Adopted 2019-07
P0330R5 Literal Suffixes for ptrdiff_t and size_t JeanHeyd Meneide, Rein Halbersma 2019-07-24 2019-08 P0330R4 Core  
P0350R3 Integrating simd with parallel algorithms Matthias Kretz 2019-07-23 2019-08 P0350R2 Library Evolution  
P0388R4 Permit conversions to arrays of unknown bound Robert Haberlach, Richard Smith 2019-07-18 2019-08 P0388R3 Core Adopted 2019-07
P0408R7 Efficient Access to basic_stringbuf’s Buffer Peter Sommerlad 2019-07-18 2019-08 P0408R6 Library Evolution, Library Adopted 2019-07
P0466R5 Layout-compatibility and Pointer-interconvertibility Traits Lisa Lippincott 2019-07-26 2019-08 P0466R4 Core, Library Adopted 2019-07
P0592R2 To boldly suggest an overall plan for C++23 Ville Voutilainen 2019-08-04 2019-08 P0592R1 Evolution, Library Evolution  
P0631R8 Math Constants Lev Minkovsky, John McFarlane 2019-07-28 2019-08 P0631R7 Library Adopted 2019-07
P0645R10 Text Formatting Victor Zverovich 2019-07-18 2019-08 P0645R9 Library Adopted 2019-07
P0660R10 Stop Token and Joining Thread Nicolai Josuttis, Lewis Baker, Billy O'Neal, Herb Sutter, Anthony Williams 2019-07-21 2019-08 P0660R9 Library Adopted 2019-07
P0709R4 Zero-overhead deterministic exceptions: Throwing values Herb Sutter 2019-08-04 2019-08 P0709R3 Evolution, Library Evolution  
P0784R7 More constexpr containers Daveed Vandevoorde, Peter Dimov,Louis Dionne, Nina Ranns, Richard Smith, Daveed Vandevoorde 2019-07-22 2019-08 P0784R6 Core, Library Adopted 2019-07
P0848R3 Conditionally Trivial Special Member Functions Barry Revzin, Casey Carter 2019-07-28 2019-08 P0848R2 Core Adopted 2019-07
P0876R8 fiber_context - fibers without scheduler Oliver Kowalke, Nat Goodspeed 2019-08-05 2019-08 P0876R7 SG1  
P0943R4 Support C atomics in C++ Hans Boehm 2019-08-05 2019-08 P0943R3 Library  
P0980R1 Making std::string constexpr Louis Dionne 2019-07-19 2019-08 P0980R0 Library Evolution Adopted 2019-07
P1000R2 C++ IS schedule Herb Sutter 2019-07-29 2019-08 P1000R1 WG21  
P1004R2 Making std::vector constexpr Louis Dionne 2019-07-19 2019-08 P1004R1 Library Adopted 2019-07
P1018R4 Evolution status after Cologne 2019 Ville Voutilainen 2019-08-04 2019-08 P1018R3 WG21  
P1021R5 Filling holes in Class Template Argument Deduction Mike Spertus, Timur Doumler, Richard Smith 2019-08-04 2019-08 P1021R4 Core  
P1035R7 Input Range Adaptors Christopher Di Bella, Casey Carter, Corentin Jabot 2019-08-02 2019-08 P1035R6 Library Adopted 2019-07
P1065R2 constexpr INVOKE Barry Revzin, Tomasz Kaminski 2019-07-28 2019-08 P1065R1 Library Adopted 2019-07
P1099R5 Using Enum Gašper Ažman, Jonathan Mueller 2019-07-20 2019-08 P1099R4 WG21 Adopted 2019-07
P1112R2 Language support for class layout control Pal Balog 2019-08-04 2019-08 P1112R1 SG7, EWGI, Evolution  
P1132R5 out_ptr - a scalable output pointer abstraction JeanHeyd Meneide, Todor Buyukliev, Isabella Muerte 2019-08-05 2019-08 P1132R4 Library  
P1135R6 The C++20 Synchronization Library David Olsen, Olivier Giroux, JF Bastien, Detlef Vollmann, Bryce Lelbach 2019-07-20 2019-08 P1135R5 WG21 Adopted 2019-07
P1143R2 Adding the constinit keyword Eric Fiselier 2019-07-18 2019-08 P1143R1 Evolution, Core Adopted 2019-07
P1152R4 Deprecating volatile JF Bastien 2019-07-22 2019-08 P1152R3 Core Adopted 2019-07
P1186R3 When do you actually use <=>? Barry Revzin 2019-07-28 2019-08 P1186R2 Core Adopted 2019-07
P1207R3 Movability of Single-pass Iterators Corentin Jabot 2019-08-02 2019-08 P1207R2 Library  
P1207R4 Movability of Single-pass Iterators Corentin Jabot 2019-07-19 2019-08 P1207R3 Library Adopted 2019-07
P1208R6 Adopt source location from Library Fundamentals V3 for C++20 Corentin Jabot, Robert Douglas, Daniel Krugler, Peter Sommerlad 2019-08-02 2019-08 P1208R5 Library Adopted 2019-07
P1301R4 [[nodiscard("should have a reason")]] JeanHeyd Meneide, Isabella Muerte 2019-08-05 2019-08 P1301R3 WG21 Adopted 2019-07
P1315R3 secure_clear Miguel Ojeda 2019-08-05 2019-08 P1315R2 SG1  
P1331R2 Permitting trivial default initialization in constexpr contexts CJ Johnson 2019-07-26 2019-08 P1331R1 Core Adopted 2019-07
P1361R2 Integration of chrono with text formatting Victor Zverovich, Daniela Engert, Howard E. Hinnant 2019-07-19 2019-08 P1361R1 Library Adopted 2019-07
P1375R2 More Constrained: Apples or Oranges? Hubert Tong 2019-08-03 2019-08 P1375R1 WG21  
P1391R3 Range constructor for std::string_view Corentin Jabot 2019-08-02 2019-08 P1391R2 Library Evolution, Library  
P1394R3 Range constructor for std::span Corentin Jabot, Casey Carter 2019-08-02 2019-08 P1394R2 Library  
P1413R2 Deprecate std::aligned_storage and std::aligned_union CJ Johnson 2019-07-26 2019-08 P1413R1 Library Evolution, Library  
P1423R3 char8_t backward compatibility remediation Tom Honermann 2019-07-20 2019-08 P1423R2 WG21 Adopted 2019-07
P1429R3 Contracts That Work Joshua Berne, John Lakos 2019-07-23 2019-08 P1429R2 Evolution  
P1452R2 On the non-uniform semantics of return-type-requirements Hubert Tong 2019-07-18 2019-08 P1452R1 Core, Library Adopted 2019-07
P1466R3 Miscellaneous minor fixes for chrono Howard E. Hinnant 2019-07-17 2019-08 P1466R2 Library Adopted 2019-07
P1474R1 Helpful pointers for ContiguousIterator Casey Carter 2019-07-22 2019-08 P1474R0 WG21 Adopted 2019-07
P1478R2 Byte-wise atomic memcpy Hans Boehm 2019-08-05 2019-08 P1478R1 SG1  
P1502R1 Standard library header units for C++20 Richard Smith 2019-08-15 2019-08 P1502R0 Library Adopted 2019-07
P1510R0 Core Language Working Group "tentatively ready" Issues for the July, 2019 (Cologne) meeting William M. Miller 2019-07-19 2019-08   WG21 Adopted 2019-07
P1522R1 Iterator Difference Type and Integer Overflow Eric Niebler 2019-07-28 2019-08 P1522R0 Library Evolution, Library Adopted 2019-07
P1523R1 Views and Size Types Eric Niebler 2019-07-28 2019-08 P1523R0 Library Evolution, Library Adopted 2019-07
P1607R1 Minimizing Contracts Joshua Berne, Jeff Snyder, Ryan McDougall 2019-07-23 2019-08 P1607R0 Evolution  
P1612R1 Relocate Endian's Specification Arthur O'Dwyer 2019-07-20 2019-08 P1612R0 Library Adopted 2019-07
P1614R2 The Mothership Has Landed: Adding <=> to the Library Barry Revzin 2019-07-28 2019-08 P1614R1 Library Adopted 2019-07
P1616R1 Using unconstrained template template parameters with constrained templates Mike Spertus, Roland Bock 2019-07-28 2019-08 P1616R0 Core Adopted 2019-07
P1624R1 Resolving technical issues in parameter mapping equivalence and related problems Hubert Tong 2019-08-05 2019-08 P1624R0 Core  
P1630R1 Spaceship needs a tune-up Barry Revzin 2019-07-17 2019-08 P1630R0 Evolution, Core Adopted 2019-07
P1631R0 Object detachment and attachment Niall Douglas, Bob Steagall 2019-07-11 2019-08   SG1, SG12, SG14  
P1633R1 Amendments to the C++20 Synchronization Library David Olsen, Olivier Giroux 2019-07-19 2019-08 P1633R0 SG1  
P1636R1 Formatters for library types Lars Gullik Bjønnes 2019-08-02 2019-08 P1636R0 Library Evolution, Library  
P1638R1 basic_istream_view's iterator should not be copyable Corentin Jabot, Christopher Di Bella 2019-08-02 2019-08 P1638R0 SG16, Library Evolution, Library Adopted 2019-07
P1643R1 Add wait/notify to atomic_ref David Olsen 2019-07-20 2019-08 P1643R0 WG21 Adopted 2019-07
P1648R1 The Concept of Extending Argument and a Support Library Mingxin Wang, Agustín Bergé 2019-08-05 2019-08 P1648R0 LEWGI, Library Evolution, Library  
P1652R1 Printf corner cases in std::format Zhihao Yuan, Victor Zverovich 2019-07-18 2019-08 P1652R0 Library Adopted 2019-07
P1661R1 Remove dedicated precalculated hash lookup interface Tomasz Kamiński 2019-07-18 2019-08 P1661R0 Library Adopted 2019-07
P1664R0 reconstructible_range - a concept for putting ranges back together JeanHeyd Meneide 2019-08-05 2019-08   Library Evolution, Library  
P1668R1 Enabling constexpr Intrinsics By Permitting Unevaluated inline-assembly in constexpr Functions Erich Keane 2019-07-17 2019-08   EWGI, Evolution Adopted 2019-07
P1675R1 rethrow_exception must be allowed to copy Billy O'Neal 2019-07-19 2019-08 P1675R0 Evolution, Core, Library  
P1677R1 Cancellation is not an Error Kirk Shoop 2019-08-05 2019-08 P1677R0 SG1, Evolution, Library Evolution  
P1678R1 Callbacks and Composition Kirk Shoop 2019-08-05 2019-08 P1678R0 SG1, SG13, Library Evolution  
P1682R1 std::to_underlying JeanHeyd Meneide 2019-08-05 2019-08 P1682R0 Library  
P1687R1 Summary of the Tooling Study Group's Modules Ecosystem Technical Report Telecons Bryce Adelstein Lelbach, Ben Craig 2019-08-06 2019-08 P1687R0 SG2, SG15, Evolution  
P1689R1 Format for describing dependencies of source files Ben Boeckel, Brad King 2019-08-09 2019-08 P1689R0 SG15, SG16, Evolution  
P1703R1 Recognizing Header Unit Imports Requires Full Preprocessing Boris Kolpackov 2019-07-19 2019-08 P1703R0 SG2, Evolution Adopted 2019-07
P1714R1 NTTP are incomplete without float, double, and long double! Jorg Brown 2019-07-19 2019-08 P1714R0 Evolution, Core  
P1716R1 ranges compare algorithm are over-constrained Tomasz Kamiński 2019-07-28 2019-08 P1716R0 Library Evolution  
P1732R1 Do not promise support for function syntax of operators CJ Johnson 2019-07-26 2019-08 P1732R0 Library Evolution, Library  
P1739R1 Type erasure for forwarding ranges in combination with "subrange-y" view adaptors Hannes Hauswedell 2019-07-15 2019-08 P1739R0 Library  
P1746R1 Feedback on P1386R2 std::audio Sophia Poirier, Richard Powell, David Singer, Dan Klingler, Tony Guetta, Doug Wyatt 2019-07-24 2019-08 P1746R0 SG13, Library Evolution  
P1754R1 Rename concepts to standard_case for C++20, while we still can Herb Sutter, Casey Carter, Gabriel Dos Reis, Eric Niebler, Bjarne Stroustrup, Andrew Sutton, Ville Voutilainen 2019-07-18 2019-08 P1754R0 Evolution, Library Evolution, Library Adopted 2019-07
P1759R1 Native handle from file streams Elias Kosunen 2019-07-29 2019-08 P1759R0 Library Evolution  
P1766R1 Mitigating minor modules maladies Richard Smith 2019-08-07 2019-08 P1766R0 Evolution Adopted 2019-07
P1771R1 [[nodiscard]] for constructors Peter Sommerlad 2019-07-19 2019-08 P1771R0 EWGI, Evolution, Core Adopted 2019-07
P1779R1 ABI isolation for member functions S. Davis Herring 2019-08-02 2019-08 P1779R0 Evolution  
P1782R1 Local contract restrictions S. Davis Herring 2019-08-02 2019-08 P1782R0 SG21  
P1787R1 Declarations and where to find them S. Davis Herring 2019-08-02 2019-08 P1787R0 Core  
P1788R2 Reuse of the built modules (BMI) Olga Arkhipova 2019-07-18 2019-08 P1788R1 SG15, Core  
P1801R0 Clarifying atomic[thread::id]::compare_exchange_* Herb Sutter 2019-07-17 2019-08   SG1, Library Evolution, Library  
P1803R0 packexpr(args, I) - compile-time friendly pack inspection JeanHeyd Meneide 2019-08-06 2019-08   EWGI, Evolution  
P1807R0 An Overview of Contracts Papers for Cologne Joshua Berne 2019-07-23 2019-08   Evolution  
P1808R0 Contra P0339 "polymorphic_allocator as a vocabulary type" Arthur O'Dwyer 2019-07-11 2019-08   Library Evolution, Library  
P1810R0 A Quick Look at What P1754 Will Change Christopher Di Bella 2019-08-05 2019-08   Evolution, Library Evolution, Library  
P1811R0 Relaxing redefinition restrictions for re-exportation robustness Richard Smith, Gabriel Dos Reis 2019-08-07 2019-08   Evolution Adopted 2019-07
P1812R0 Axioms should be assumable: a minimal fix for contracts Timur Doumler, Ville Voutilainen 2019-07-18 2019-08   Evolution, Core  
P1813R0 A Concept Design for the Numeric Algorithms Christopher Di Bella 2019-08-02 2019-08   SG6, Library Evolution  
P1814R0 Wording for Class Template Argument Deduction for Alias Templates Mike Spertus 2019-07-28 2019-08   Core Adopted 2019-07
P1815R0 Translation-unit-local entities S. Davis Herring 2019-08-02 2019-08   Core  
P1816R0 Wording for class template argument deduction for aggregates Timur Doumler 2019-07-18 2019-08   Core Adopted 2019-07
P1818R0 Narrowing and Widening Conversions Lawrence Crowl 2019-07-16 2019-08   EWGI  
P1819R0 Interpolated Literals Vittorio Romeo 2019-07-20 2019-08   EWGI  
P1823R0 Remove Contracts from C++20 Nicolai Josuttis, Ville Voutilainen, Roger Orr, Daveed Vandevoorde, John Spicer, Christopher Di Bella 2019-07-21 2019-08   Evolution, Core Adopted 2019-07
P1825R0 Merged wording for P0527R1 and P1155R3 David Stone 2019-07-19 2019-08   Core Adopted 2019-07
P1830R0 std::dependent_false Ruslan Arutyunyan 2019-07-18 2019-08   LEWGI  
P1831R0 deprecating volatile: library JF Bastien 2019-08-02 2019-08   Library  
P1832R0 Improving Debug Builds Inline With User Expectation John McFarlane 2019-08-05 2019-08   SG2, SG14, SG15  
P1837R0 Remove NTTPs of class type from C++20 Arthur O'Dwyer 2019-07-29 2019-08   Evolution, Library Evolution  
P1839R0 Accessing Object Representations Krystian Stasiowski 2019-08-09 2019-08   Core  
P1840R0 Cologne 2019, Record of Discussion Nina Ranns 2019-08-05 2019-08   WG21  
P1841R0 Wording for Individually Specializable Numeric Traits Walter E Brown 2019-08-03 2019-08   Library  
P1842R0 Generalized Module (Dependency?) Mapper Boris Kolpackov 2019-08-04 2019-08   SG15  
P1843R0 Comparison and Hasher Requirements Billy O'Neal 2019-08-01 2019-08   Library Evolution  
P1844R0 Enhancement of regex Nozomu Katō 2019-08-04 2019-08   SG16, LEWGI  
P1845R0 2019-09-21 Denver Tooling Meeting Bryce Adelstein Lelbach, Jon Kalb 2019-08-06 2019-08   SG15  
P1846R0 Teach class Last John McFarlane 2019-08-05 2019-08   SG20  
P1847R0 Make declaration order layout mandated Pal Balog 2019-08-05 2019-08   Evolution  
P1851R0 Guidelines For snake_case Concept Naming Jonathan Müller 2019-08-09 2019-08   Library Evolution  


Trip report: July 2019 ISO C++ committee meeting, Cologne, Germany -- Timur Doumler

Timur Doumler's trip report from the ISO C++ committee meeting in Cologne in July 2019. A snapshot of what's going on in the world of C++ standardisation, from the perspective of an audio developer.

Trip Report July 2019 ISO C++ Committee Meeting

by Timour Doumler

About the trip report

A few weeks ago, the C++ committee descended upon Cologne, Germany, to finalise the C++20 Committee Draft (or in other words, our “release candidate” for C++20).

As usual, my trip report does not aim for completeness at all. Instead, it focuses on a few particular areas that I was involved in personally and/or things that might be relevant for the audio community.