October 2019

C/C++ Include Guidelines -- Thomas Young

Good practices for setting up include files are key to keeping large code-bases manageable, in pre-modules C++, and this article presents 15 rules to keep you on the right track.

C/C++ Include Guidelines

by Thomas Young

From the article:

The rules listed here are relatively mechanical, by which I mean that these are things that can be applied locally to individual bits of source code, without strokes of genius or flashes of inspiration, but with the possibility to nevertheless significantly improve code organisation, which is useful particularly in the case of large legacy code bases.

CopperSpice: std::variant

New video on the CopperSpice YouTube Channel:

std::variant

by Barbara Geller and Ansel Sermersheim

About the video:

In this video, we discuss the std::variant class and its relationship to C++ unions. We explore the drawbacks and constraints of the union abstraction in C++, how they changed in C++11, and how variant addresses many of these shortcomings.

Please take a look and remember to subscribe!

Generate stub code from Gherkin DSL -- Zebedee Mason

A small Gherkin DSL parser that generates stub code

Cornichon

by Zebedee Mason

From the article:

The supported frameworks are:

  • cpp/cppunittest - Microsoft's Visual C++ test framework
  • cpp/googletest - Google Test

How to Merge Consecutive Elements in a C++ Collection--Jonathan Boccara

Simple and sweet.

How to Merge Consecutive Elements in a C++ Collection

by Jonathan Boccara

From the article:

Merging identical consecutive elements in a collection is a recurring need, in C++ or elsewhere in programming.

For example, we could want to aggregate a collection of hourly results into a collection of daily results: all the results of each day get aggregated into one for that day. In this case, being “identical” means being on the same day, and “aggregating” means taking two results with a common date, and creating a result at this date and with the sum of their amounts...

Overload 153 is now available

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

Overload 153 is now available

From the journal:

Predictions and Predilections.
Forecasting the future is difficult. Frances Buontempo has a foreboding sense that a lack of impartially makes things even harder.

Scenarios Using Custom DSLs.
Natural-language BDD can be hard to maintain. Liz Keogh demonstrates a simple code-based alternative.

OOP Is not Essential.
People tend to love or hate Object Oriented Programming. Lucian Teodorescu considers a recent OOP claim.

I Come Here Not to Bury Delphi, But to Praise It.
What helps a programming language gain traction? Patrick Martin remembers why he used to use Delphi.

C++ Pipes.
Expressive code can make life easier. Jonathan Boccara demonstrates fluent pipelines for collections in C++.

2019-10 pre-Belfast mailing available (2 of 2)

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

 

P1750R1 A Proposal to Add Process Management to the C++ Standard Library Klemans Morgenstern, Jeff Garland, Elias Kosunen, Fatih Bakir 2019-10-07 2019-10 P1750R0 SG1, LEWGI  
P1772R1 Variadic overload sets and overload sequences Vincent Reverdy 2019-10-06 2019-10 P1772R0 SG7, EWGI  
P1774R1 Portable optimisation hints Timur Doumler 2019-10-06 2019-10 P1774R0 SG21, EWGI, Evolution  
P1787R2 Declarations and where to find them S. Davis Herring 2019-10-05 2019-10 P1787R1 Core  
P1795R1 System topology discovery for heterogeneous & distributed computing Gordon Brown, Ruyman Reyes, Michael Wong, Mark Hoemmen, Jeff Hammond, Tom Scogland, Domagoj Šarić 2019-10-08 2019-10 P1795R0 SG1, SG14  
P1820R0 Recommendations for a compromise on handling errors and cancellations in executors Gordon Brown 2019-10-08 2019-10   SG1, Library Evolution  
P1830R1 std::dependent_false Ruslan Arutyunyan 2019-10-07 2019-10 P1830R0 LEWGI  
P1839R1 Accessing Object Representations Krystian Stasiowski 2019-10-02 2019-10 P1839R0 Core  
P1847R1 Make declaration order layout mandated Pal Balog 2019-10-01 2019-10 P1847R0 Evolution  
P1854R0 Conversion to execution encoding should not lead to loss of meaning Corentin Jabot 2019-10-06 2019-10   SG16, Evolution  
P1855R0 Make <compare> freestanding Ben Craig, Bryce Adelstein Lelbach 2019-10-05 2019-10   Library Evolution  
P1856R0 Bit operations do not work on bytes: a generic fix Vincent Reverdy 2019-10-07 2019-10   Library Evolution, Library  
P1857R0 Modules Dependency Discovery Michael Spencer 2019-10-07 2019-10   SG2, SG15, Evolution  
P1857R1 Modules Dependency Discovery Michael Spencer 2019-10-07 2019-10 P1857R0 SG2, SG15, Evolution  
P1858R0 Generalized pack declaration and usage Barry Revzin 2019-10-07 2019-10   Evolution  
P1859R0 Standard terminology for execution character set encodings Steve Downey 2019-10-09 2019-10   SG16, Evolution, Core  
P1860R0 C++ Networking Must Be Secure By Default JF Bastien, Alex Christensen 2019-10-07 2019-10   Library Evolution  
P1861R0 Secure Connections in Networking TS JF Bastien, Alex Christensen 2019-10-07 2019-10   Library Evolution  
P1862R0 Ranges adaptors for non-copyable iterators Corentin Jabot 2019-10-06 2019-10   Library Evolution, Library  
P1865R0 Add max() to latch and barrier David Olsen, Olivier Giroux 2019-09-30 2019-10   Library Evolution, Library  
P1868R0 ? width: clarifying units of width and precision in std::format Victor Zverovich, Zach Laine 2019-10-05 2019-10   SG16, Library Evolution  
P1869R0 Rename 'condition_variable_any' interruptible wait methods Tomasz Kamiński, Michał Dominiak 2019-10-01 2019-10   Library Evolution  
P1870R0 forwarding-range is too subtle Barry Revzin 2019-10-07 2019-10   Library Evolution  
P1871R0 Should concepts be enabled or disabled? Barry Revzin 2019-10-07 2019-10   Library Evolution  
P1872R0 span should have size_type, not index_type Nevin Liber 2019-10-07 2019-10   Library Evolution  
P1873R0 remove.dots.in.module.names Michael Spencer 2019-10-07 2019-10   SG2, Evolution  
P1873R1 remove.dots.in.module.names Michael Spencer 2019-10-07 2019-10 P1873R0 SG2, Evolution  
P1874R0 Dynamic Initialization Order of Non-Local Variables in Modules Michael Spencer 2019-10-07 2019-10   SG2, Evolution  
P1875R0 Transactional Memory Lite Support in C++ Michael Spear, Hans Boehm, Victor Luchangco, Michael Scott, Michael Wong 2019-10-07 2019-10   SG1  
P1876R0 All The Module Names Rene Rivera 2019-10-04 2019-10   SG15  
P1876R1 All The Module Names Rene Rivera 2019-10-08 2019-10 P1876R0 SG2  
P1877R0 Saving Private Ranges: Recovering Lost Information from Comparison and Predicate Algorithms JeanHeyd Meneide 2019-10-07 2019-10   Library Evolution  
P1878R0 Constraining Readable Types Eric Niebler, Casey Carter 2019-10-04 2019-10   Library  
P1879R0 Please Don't Rewrite My String Literals Zach Laine 2019-10-06 2019-10   SG16, EWGI  
P1880R0 uNstring Arguments Shall Be UTF-N Encoded Zach Laine 2019-10-06 2019-10   SG16, LEWGI  
P1881R0 Epochs: a backward-compatible language evolution mechanism Vittorio Romeo 2019-10-06 2019-10   EWGI  
P1882R0 Addition of a filter to recursive_directory_iterator Noel Tchidjo Moyo 2019-09-26 2019-10   EWGI  
P1883R0 Walkthrough of P1031s file_handle for LEWG-I Niall Douglas 2019-09-26 2019-10   LEWGI  
P1885R0 Naming Text Encodings to Demystify Them Corentin Jabot 2019-10-06 2019-10   SG16, Library Evolution  
P1886R0 Error speed benchmarking Ben Craig 2019-10-05 2019-10   SG14, Direction Group  
P1887R0 Typesafe Reflection on attributes Corentin Jabot 2019-10-06 2019-10   SG7  
P1888R0 Executors without exception handling support Matti Rintala, Matti Rintala, Michael Wong, David S. Hollman, Pekka Jääskeläinen 2019-10-07 2019-10   SG1  
P1889R0 C++ Numerics Work In Progress Alexander Zaitsev, Antony Polukhin 2019-10-01 2019-10   SG6  
P1890R0 C++ Numerics Work In Progress Issues Antony Polukhin, Alexander Zaitsev 2019-10-01 2019-10   SG6  
P1891R0 The Linear-Algebra Effort Guy Davidson, Mark Hoemmen, David Hollman, Bob Steagall, Christian Trott 2019-10-13 2019-10   SG6, SG14, SG19, Library Evolution  
P1892R0 Extended locale-specific presentation specifiers for std::format Peter Brett 2019-10-07 2019-10   SG16, LEWGI  
P1893R0 Proposal of Contract Primitives Andrew Tomazos 2019-10-01 2019-10   SG21  
P1894R0 Proposal of std::upto, std::indices and std::enumerate Andrew Tomazos 2019-10-02 2019-10   LEWGI  
P1895R0 tag_invoke: A general pattern for supporting customisable functions Lewis Baker, Eric Niebler, Kirk Shoop 2019-10-08 2019-10   Library Evolution  
P1896R0 SG16: Unicode meeting summaries 2019/06/12 - 2019/09/25 Tom Honermann 2019-10-02 2019-10   SG16  
P1897R0 Towards C++23 executors: An initial set of algorithms Lee Howes 2019-10-07 2019-10   SG1  
P1898R0 Forward progress delegation for executors Lee Howes 2019-10-07 2019-10   SG1  
P1899R0 stride_view Christopher Di Bella 2019-10-07 2019-10   Library Evolution  
P1900R0 Concepts-Adjacent Problems Barry Revzin 2019-10-07 2019-10   Evolution  
P1901R0 Enabling the Use of weak_ptr as Keys in Unordered Associative Containers Daryl Haresign 2019-10-03 2019-10   Library Evolution  
P1902R0 Missing feature-test macros 2018-2019 Barry Revzin 2019-10-07 2019-10   Evolution, Library Evolution  
P1905R0 In-Source Mechanism to Identify Importable Headers Corentin Jabot 2019-10-06 2019-10   SG15, Evolution  
P1906R0 Provided operator= return lvalue-ref on rvalue Peter Sommerlad 2019-10-07 2019-10   SG12, EWGI, Evolution, Core  
P1907R0 Inconsistencies with non-type template parameters Jens Maurer 2019-10-07 2019-10   Evolution  
P1908R0 Reserving Attribute Names for Future Use Corentin Jabot 2019-10-06 2019-10   Evolution  
P1912R0 Interconvertible object representations Timur Doumler 2019-10-06 2019-10   EWGI, Evolution  
P1913R0 Comments on Audio Devices Frank Birbacher 2019-10-06 2019-10   SG13  
P1914R0 On the names of shift algorithms Vincent Reverdy 2019-10-07 2019-10   Library Evolution, Library  
P1915R0 Expected Feedback from simd in the Parallelism TS 2 Matthias Kretz 2019-10-07 2019-10   SG1, Library Evolution  
P1916R0 There might not be an elegant OOTA fix David Goldblatt 2019-10-07 2019-10   SG1  
P1917R0 C++ Library Issues to be moved in Belfast Marshall Clow 2019-10-07 2019-10   WG21  
P1919R0 Expanding the Rights in SD-8 Nevin Liber 2019-10-07 2019-10   Library Evolution  
P1920R0 Proposal of Namespace Templates Andrew Tomazos 2019-10-07 2019-10   EWGI  
P1921R0 What's in a Name? Nevin Liber 2019-10-07 2019-10   Library Evolution  
P1922R0 Making std::list constexpr Alexander Zaitsev 2019-10-07 2019-10   LEWGI  
P1923R0 Making std::deque constexpr Alexander Zaitsev 2019-10-07 2019-10   LEWGI  
P1924R0 Making std::stack constexpr Alexander Zaitsev 2019-10-07 2019-10   LEWGI  
P1925R0 Making std::queue constexpr Alexander Zaitsev 2019-10-07 2019-10   LEWGI  
P1926R0 Making std::priority_queue constexpr Alexander Zaitsev 2019-10-07 2019-10   LEWGI  
P1927R0 Add std::is_partitioned_until algorithm Alexander Zaitsev 2019-10-07 2019-10   LEWGI  
P1928R0 Merge data-parallel types from the Parallelism TS 2 Matthias Kretz 2019-10-07 2019-10   SG1  
P1929R0 Making std::forward_list constexpr Alexander Zaitsev 2019-10-07 2019-10   LEWGI  
P1930R0 Towards a standard unit systems library Vincent Reverdy 2019-10-07 2019-10   SG6, LEWGI  
P1932R0 Extension of the C++ random number generators Pavel Dyakov, Ilya Burylov; Ruslan Arutyunyan; Andrey Nikolaev 2019-10-07 2019-10   SG6  
P1933R0 Suggestions for bulk_execute Jared Hoberock 2019-10-07 2019-10   SG1  
P1936R0 Dependent Static Assertion Ruslan Arutyunyan 2019-10-07 2019-10   EWGI  
P1937R0 Fixing inconsistencies between `constexpr` and `consteval` functions David Stone 2019-10-07 2019-10   Evolution  
P1938R0 if consteval Barry Revzin, Daveed Vandevoorde, Richard Smith 2019-10-10 2019-10   Evolution  
P1943R0 Networking TS changes to improve completion token flexibility and performance Christopher Kohlhoff 2019-10-07 2019-10   SG1, Library Evolution  

2019-10 pre-Belfast mailing available (1 of 2)

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

 

N4831 2022 Portland Meeting Invitation and Information Erich Keane 2019-10-04 2019-10 WG21
N4832 2021 Kona meeting information Herb Sutter 2019-10-02 2019-10 WG21
N4833 Agenda for Belfast John Spicer 2019-10-04 2019-10 WG21
N4834 WG21 telecon meeting: Pre-Belfast Herb Sutter 2019-10-04 2019-10 WG21
N4835 Working Draft, Standard for Programming Language C++ Richard Smith 2019-10-08 2019-10 N4830 WG21
N4836 Editors’ Report - Programming Languages - C++ Richard Smith 2019-10-08 2019-10 WG21
N4837 2020 Varna Meeting Information Vassil Vassilev 2019-10-08 2019-10 N4825 WG21
P0267R10 A Proposal to Add 2D Graphics Rendering and Display to C++ Michael B McLaughlin, Herb Sutter, Jason Zink, Guy Davidson, Michael Kazakov 2019-10-07 2019-10 P0267R9 SG13, SG16
P0288R5 any_invocable Matt Calabrese, Ryan McDougall 2019-10-07 2019-10 P0288R4 Library
P0443R11 A Unified Executors Proposal for C++ Jared Hoberock, Michael Garland, Chris Kohlhoff, Chris Mysen, Carter Edwards, Gordon Brown, David Hollman, Lee Howes, Kirk Shoop, Eric Niebler 2019-10-07 2019-10 P0443R10 SG1, Library Evolution
P0447R8 Introduction of std::colony to the standard library Matt Bentley 2019-09-05 2019-10 P0447R7 WG21
P0447R9 Introduction of std::colony to the standard library Matt Bentley 2019-10-10 2019-10 P0447R8 WG21
P0549R6 Adjuncts to std::hash Walter E Brown 2019-10-05 2019-10 P0549R5 Library
P0592R3 To boldly suggest an overall plan for C++23 Ville Voutilainen 2019-10-07 2019-10 P0592R2 Evolution, Library Evolution
P0593R5 Implicit creation of objects for low-level object manipulation Richard Smith 2019-10-07 2019-10 P0593R4 Evolution, Core, Library
P0596R1 Side-effects in constant evaluation: Output and consteval variables Daveed Vandevoorde 2019-10-08 2019-10 P0596R0 Evolution
P0642R3 The Concurrent Invocation Library Mingxin Wang, Wei Chen 2019-10-07 2019-10 P0642R2 SG1, Library Evolution, Library
P0792R5 function_ref: a non-owning reference to a Callable Vittorio Romeo 2019-10-06 2019-10 P0792R4 Library
P0849R2 auto(x): decay-copy in the language Zhihao Yuan 2019-10-07 2019-10 P0849R1 Evolution, Library Evolution
P0876R9 fiber_context - fibers without scheduler Oliver Kowalke, Nat Goodspeed 2019-10-06 2019-10 P0876R8 SG1, SG14, Evolution, Library Evolution
P0901R5 Size feedback in operator new Chris Kennelly, Andrew Hunter 2019-10-06 2019-10 P0901R4 Evolution, Library Evolution
P0917R3 Making operator?: overloadable Matthias Kretz 2019-10-07 2019-10 P0917R2 EWGI
P0939R4 Direction for ISO C++ Howard Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, M. Wong 2019-10-07 2019-10 P0939R3 WG21
P0957R3 PFA: A Generic, Extendable and Efficient Solution for Polymorphic Programming Mingxin Wang 2019-10-07 2019-10 P0957R2 SG7, EWGI, Library Evolution, Library
P1000R3 C++ IS schedule Herb Sutter 2019-10-04 2019-10 P1000R2 WG21
P1030R3 std::filesystem::path_view Niall Douglas 2019-09-26 2019-10 P1030R2 Library Evolution
P1045R1 constexpr Function Parameters David Stone 2019-09-27 2019-10 P1045R0 Evolution
P1046R1 Automatically Generate More Operators David Stone 2019-09-26 2019-10 P1046R0 Evolution, Library Evolution
P1061R1 Structured Bindings can introduce a Pack Barry Revzin, Jonathan Wakely 2019-10-07 2019-10 P1061R0 Evolution
P1068R2 Vector API for random number generation Ilya Burylov, Pavel Dyakov, Ruslan Arutyunyan, Andrey Nikolaev 2019-10-07 2019-10 P1068R1 SG1, SG6
P1072R5 basic_string::resize_default_init Chris Kennelly, Mark Zeren 2019-10-07 2019-10 P1072R4 Library Evolution, Library
P1108R3 web_view Hal Finkel 2019-10-04 2019-10 P1108R2 SG1, SG12, SG13, SG16, LEWGI
P1108R4 web_view Hal Finkel 2019-10-07 2019-10 P1108R3 SG1, SG12, SG13, SG16, LEWGI
P1115R1 Improving the Return Value of Erase-Like Algorithms II: Free erase/erase if Marc Mutz 2019-09-26 2019-10 P1115R0 Library
P1132R6 out_ptr - a scalable output pointer abstraction JeanHeyd Meneide, Todor Buyukliev, Isabella Muerte 2019-10-07 2019-10 P1132R5 Library
P1160R1 Add Test Polymorphic Memory Resource to the Standard Library Attila Fehér, Alisdair Meredith 2019-10-07 2019-10 P1160R0 Library Evolution
P1219R2 Homogeneous variadic function parameters James Touton 2019-10-06 2019-10 P1219R1 Evolution
P1240R1 Scalable Reflection in C++ Daveed Vandevoorde, Wyatt Childers, Andrew Sutton, Faisal Vali, Daveed Vandevoorde 2019-10-08 2019-10 P1240R0 SG7
P1255R5 A view of 0 or 1 elements: views::maybe Steve Downey 2019-10-09 2019-10 P1255R4 Library Evolution
P1315R4 secure_clear Miguel Ojeda 2019-10-07 2019-10 P1315R3 SG1
P1385R3 A proposal to add linear algebra support to the C++ standard library Guy Davidson, Bob Steagall 2019-10-07 2019-10 P1385R2 SG6, SG14, Library Evolution
P1389R1 Standing Document for SG20: Guidelines for Teaching C++ to Beginners Christopher Di Bella, Simon Brand, Michael Adams 2019-10-07 2019-10 P1389R0 SG20
P1401R2 Narrowing contextual conversions to bool Andrzej Krzemieński 2019-10-03 2019-10 P1401R1 Evolution
P1436R2 Executor properties for affinity-based execution Gordon Brown, Ruyman Reyes, Michael Wong, H. Carter Edwards, Thomas Rodgers, Mark Hoemmen 2019-10-08 2019-10 P1436R1 SG1, SG14
P1450R2 Enriching type modification traits Vincent Reverdy 2019-10-06 2019-10 P1450R1 Library Evolution
P1467R2 Extended floating-point types Michał Dominiak, David Olsen 2019-10-07 2019-10 P1467R1 Evolution, Library Evolution
P1468R2 Fixed-layout floating-point type aliases Michał Dominiak, David Olsen, Boris Fomitchev, Sergei Nikolaev 2019-10-07 2019-10 P1468R1 Evolution, Library Evolution
P1494R1 Partial program correctness S. Davis Herring 2019-10-03 2019-10 P1494R0 Evolution, Core, Library Evolution
P1496R0 Formatting of Negative Zero Alan Talbot, Jorg Brown, Victor Zverovich 2019-02-20 2019-10 Library Evolution
P1496R1 Formatting of Negative Zero Alan Talbot, Jorg Brown 2019-10-06 2019-10 P1496R0 Library Evolution, Library
P1609R2 C++ Should Support Just-in-Time Compilation Hal Finkel 2019-10-07 2019-10 P1609R1 EWGI
P1619R1 Functions for Testing Boundary Conditions on Integer Operations Lisa Lippincott 2019-10-04 2019-10 P1619R0 SG6, Library Evolution
P1622R2 Mandating the Standard Library: Clause 32 - Thread support library Daniel Sunderland 2019-10-07 2019-10 P1622R1 Library
P1636R2 Formatters for library types Lars Gullik Bjønnes 2019-10-06 2019-10 P1636R1 Library
P1640R1 Error size benchmarking: Redux Ben Craig 2019-09-29 2019-10 P1640R0 WG21, Direction Group
P1641R1 Freestanding Library: Rewording the Status Quo Ben Craig 2019-09-29 2019-10 P1641R0 SG14, Library Evolution
P1642R1 Freestanding Library: Easy [utilities], [ranges], and [iterators] Ben Craig 2019-09-30 2019-10 P1642R0 SG14, Library Evolution
P1648R2 A Library for Sink Argument Passing Mingxin Wang, Agustín Bergé 2019-10-07 2019-10 P1648R1 Library Evolution, Library
P1673R1 A free function linear algebra interface based on the BLAS Mark Hoemmen, David Hollman, Christian Trott, Daniel Sunderland, Nevin Liber, Siva Rajamanickam, Li-Ta Lo, Graham Lopez, Peter Caday, Sarah Knepper, Piotr Luszczek, Timothy Costa 2019-06-17 2019-10 P1673R0 SG6, SG14, SG19, Library Evolution
P1677R2 Cancellation is not an Error Kirk Shoop, Lisa Lippincott, Lewis Baker 2019-10-06 2019-10 P1677R1 Evolution
P1678R2 Callbacks and Composition Kirk Shoop 2019-10-06 2019-10 P1678R1 Library Evolution
P1679R1 String Contains function Wim Leflere, Paul Fee 2019-10-03 2019-10 P1679R0 Library
P1686R1 Mandating the Standard Library: Clause 27 - Time library Jeff Garland 2019-10-07 2019-10 P1686R0 Library
P1690R1 Refinement Proposal for P0919 Heterogeneous lookup for unordered containers Xiao Shi, Mateusz Pusz, Geoffrey Romer 2019-08-12 2019-10 P1690R0 Library
P1705R1 Enumerating Core Undefined Behavior Shafik Yaghmour 2019-10-07 2019-10 P1705R0 SG12
P1706R1 Programming Language Vulnerabilities for C++ update Michael Wong, Stephen Michel 2019-10-07 2019-10 P1706R0 SG12
P1716R2 ranges compare algorithm are over-constrained Tomasz Kamiński 2019-10-06 2019-10 P1716R1 Library
P1718R1 Mandating the Standard Library: Clause 25 - Algorithms library Marshall Clow 2019-10-07 2019-10 P1718R0 Library
P1719R1 Mandating the Standard Library: Clause 26 - Numerics library Marshall Clow 2019-10-07 2019-10 P1719R0 Library
P1720R1 Mandating the Standard Library: Clause 28 - Localization library Marshall Clow 2019-10-07 2019-10 P1720R0 Library
P1721R1 Mandating the Standard Library: Clause 29 - Input/Output library Marshall Clow 2019-10-07 2019-10 P1721R0 Library
P1722R1 Mandating the Standard Library: Clause 30 - Regular Expression library Marshall Clow 2019-10-07 2019-10 P1722R0 Library
P1723R1 Mandating the Standard Library: Clause 31 - Atomics library Marshall Clow 2019-10-07 2019-10 P1723R0 Library
P1725R1 Modular Topic Design Christopher Di Bella 2019-10-07 2019-10 P1725R0 SG20
P1729R1 Text Parsing Victor Zverovich , Elias Kosunen 2019-10-06 2019-10 P1729R0 Library Evolution
P1731R1 Memory helper functions for containers Ruslan Arutyunyan, Ilya Burylov, Pablo Halpern 2019-10-07 2019-10 P1731R0 Library Evolution
P1739R2 Avoid template bloat for forwarding ranges in combination with 'subrange-y' view adaptors. Hannes Hauswedell (h2 AT fsfe.org) 2019-10-06 2019-10 P1739R1 Library
P1748R1 Fill in [delay.cpp] TODO in D1389 Yehezkel Bernat 2019-10-13 2019-10 P1748R0 SG20

Code analysis with clang-tidy in Visual Studio--Eli Fessler

The safest safety comes from the tools.

Code analysis with clang-tidy in Visual Studio

by Eli Fessler

From the article:

Visual Studio 2019 version 16.4 Preview 1 brings a significant improvement to the C++ code analysis experience: native support for clang-tidy, a Clang-based “linter” tool developed by the LLVM Project that delivers a variety of code improvements such as modernization and standards conformance, static analysis, and automatic formatting...