December 2018

2018-11 post-San Diego mailing available

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

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup Disposition
N4782 WG21 Autumn Meeting - Belfast, Northern Ireland Jamie Allsop 2018-10-24 2018-11   WG21  
N4783 2019 Cologne Meeting Invitation and Information Nico Josuttis 2018‐11‐25 2018-11   WG21  
N4784 WG21 pre-San Diego telecon minutes Nina Dinka Ranns 2018-10-28 2018-11   WG21  
N4785 San Diego 2018 LEWG Summary Titus Winters 2018-11-13 2018-11   WG21  
N4786 Working Draft, C++ Extensions for Library Fundamentals, Version 3 Thomas Köppe 2018-11-13 2018-11 N4758 WG21  
N4787 Editor’s Report: C++ Extensions for Library Fundamentals, Version 3 Thomas Köppe 2018-11-13 2018-11   WG21  
N4790 WG21 2018-11 San Diego Minutes Nina Dinka Ranns 2018-11-26 2018-11   WG21  
N4791 Working Draft, Standard for Programming Language C++ Richard Smith 2018-11-26 2018-11 N4778 WG21  
N4792 Editors' Report - Programming Languages - C++ Richard Smith 2018-11-26 2018-11   WG21  
N4793 Working Draft, C++ Extensions for Parallelism Version 2 Jared Hoberock 2018-11-26 2018-11 N4773 WG21  
N4794 Parallelism TS Editor’s Report, post-San Diego mailing Jared Hoberock 2018-11-26 2018-11   WG21  
P0325R3 to_array from LFTS with updates Zhihao Yuan 2018-11-07 2018-11 P0325R2 Library Evolution  
P0330R3 Literal Suffixes for ptrdiff_t and size_t JeanHeyd Meneide, Rein Halbersma 2018-11-26 2018-11 P0330R2 Evolution, Core  
P0340R2 Making std::underlying_type SFINAE-friendly Tim Song 2018-11-25 2018-11 P0340R1 Library  
P0356R5 Simplified partial function application Tomasz Kamiński 2018-11-09 2018-11 P0356R4 Library Adopted 2018-11
P0357R3 'reference_wrapper' for incomplete types Tomasz Kamiński, Stephan T. Lavavej, Alisdair Meredith 2018-11-07 2018-11 P0357R2 Library Adopted 2018-11
P0387R1 Memory Model Issues for Concurrent Data Structures Hans-J. Boehm 2018-11-25 2018-11 P0387R0 SG1  
P0482R6 char8_t: A type for UTF-8 characters and strings (Revision 6) Tom Honermann 2018-11-09 2018-11 P0482R5 Core, Library Adopted 2018-11
P0553R3 Bit operations Jens Maurer 2018-11-22 2018-11 P0553R2 Library Evolution  
P0577R1 Kept-value statement for guard objects Zhihao Yuan 2018-07-09 2018-11 P0577R0 Evolution  
P0591R4 Utility functions to implement uses-allocator construction Pablo Halpern 2018-11-07 2018-11 P0591R3 Library Adopted 2018-11
P0595R2 std::is_constant_evaluated Richard Smith, Andrew Sutton, Daveed Vandevoorde 2018-11-09 2018-11 P0595R1 Core, Library Adopted 2018-11
P0636R3 Changes between C++14 and C++17 Thomas Köppe 2018-11-26 2018-11 P0636R2 WG21  
P0645R4 Text Formatting Victor Zverovich 2018-11-25 2018-11 P0645R3 Library Evolution, Library  
P0660R6 A Cooperatively Interruptible Joining Thread, Rev 6 Nicolai Josuttis, Billy O’Neal, Herb Sutter, Anthony Williams 2018-11-04 2018-11 P0660R5 SG1, Library Evolution, Library  
P0660R7 Interrupt Tokens and a Joining Thread, Rev 7 Nicolai Josuttis, Lewis Baker, Billy O’Neal, Herb Sutter, Anthony Williams 2018-11-09 2018-11 P0660R6 SG1, Library Evolution, Library  
P0668R5 Revising the C++ memory model Hans-J. Boehm, Olivier Giroux, Viktor Vafeiades 2018-11-09 2018-11 P0668R4 WG21 Adopted 2018-11
P0738R1 I Stream, You Stream, We All Stream for istream_iterator Casey Carter 2018-11-14 2018-11 P0738R0 Library  
P0896R4 The One Ranges Proposal Eric Niebler, Casey Carter, Christopher Di Bella 2018-11-09 2018-11 P0896R3 Library Evolution, Library Adopted 2018-11
P0899R1 LWG 3016 is Not a Defect Casey Carter 2018-11-08 2018-11 P0899R0 Library Adopted 2018-11
P0901R2 Size feedback in operator new Andrew Hunter, Chris Kennelly 2018-11-25 2018-11 P0901R1 Evolution  
P0919R3 Heterogeneous lookup for unordered containers Mateusz Pusz 2018-11-09 2018-11 P0919R2 Library Adopted 2018-11
P0924R1 Modules:Context-Sensitive Keyword Nathan Sidwell 2018-11-21 2018-11 P0924R0 Evolution  
P0982R1 Weaken release sequences Hans-J. Boehm, Olivier Giroux, Viktor Vafeiades 2018-11-06 2018-11 P0982R0 WG21 Adopted 2018-11
P0985R3 LWG Chair post-meeting report Marshall Clow 2018-11-20 2018-11 P0985R2 WG21  
P1002R1 Try-catch blocks in constexpr functions Louis Dionne 2018-11-10 2018-11 P1002R0 Core Adopted 2018-11
P1007R3 std::assume_aligned Timur Doumler, Chandler Carruth 2018-11-07 2018-11 P1007R2 Library Adopted 2018-11
P1009R1 Array size deduction in new-expressions Timur Doumler 2018-11-26 2018-11 P1009R0 Core  
P1018R2 Evolution status after San Diego 2018 Ville Voutilainen 2018-11-10 2018-11 P1018R1 WG21  
P1020R1 Smart pointer creation with default initialization Glen Joseph Fernandes, Peter Dimov 2018-11-06 2018-11 P1020R0 Library Adopted 2018-11
P1021R2 Filling holes in Class Template Argument Deduction Mike Spertus, Timur Doumler, Richard Smith 2018-11-26 2018-11 P1021R1 Evolution  
P1035R2 Input range adaptors Christopher Di Bella, Casey Carter, Corentin Jabot 2018-10-08 2018-11 P1035R1 Library Evolution  
P1035R3 Input range adaptors Christopher Di Bella, Casey Carter, Corentin Jabot 2018-10-08 2018-11 P1035R2 Library Evolution  
P1039R0 I got you, FAM: Flexible Array Members for C++ JeanHeyd Meneide, Nicole Mazzuca, Arvid Gerstmann 2018-11-26 2018-11   Evolution Incubator  
P1040R3 std::embed JeanHeyd Meneide 2018-11-26 2018-11 P1040R2 Evolution  
P1069R1 Inferencing heap objects Mike Spertus, Walter E. Brown, Stephan T. Lavavej 2018-11-25 2018-11 P1069R0 Library Evolution, Library  
P1072R2 basic_string::resize_default_init Chris Kennelly, Mark Zeren 2018-11-25 2018-11 P1072R1 SG16, Library Evolution, Library  
P1073R3 Immediate functions Richard Smith, Andrew Sutton, Daveed Vandevoorde 2018-11-06 2018-11 P1073R2 Core Adopted 2018-11
P1083R2 Move resource_adaptor from Library TS to the C++ WP Pablo Halpern 2018-11-13 2018-11 P1083R1 Library  
P1084R2 Today's return-type-requirements Are Insufficient Walter E. Brown, Casey Carter 2018-11-06 2018-11 P1084R1 Core, Library Adopted 2018-11
P1091R2 Extending structured bindings to be more like variable declarations Nicolas Lesser 2018-11-26 2018-11 P1091R1 Core  
P1094R2 Nested Inline Namespaces Alisdair Meredith 2018-11-09 2018-11 P1094R1 Evolution Adopted 2018-11
P1101R0 Vector Length Agnostic SIMD Mikhail Maltsev, Richard Sandiford 2018-05-22 2018-11   SG1, Evolution  
P1103R2 Merging Modules Richard Smith 2018-11-26 2018-11 P1103R1 WG21  
P1112R1 Language support for class layout control Pal Balog 2018-11-25 2018-11 P1112R0 Evolution Incubator, Evolution  
P1122R2 Proposed Wording for Concurrent Data Structures: Read-Copy-Update (RCU) Paul McKenney, Michael Wong, Maged M. Michael, Geoffrey Romer, Andrew Hunter, Arthur O'Dwyer, David S. Hollman, JF Bastien, Hans Boehm, David Goldblatt, Frank Birbacher, Erik Rigtorp 2018-11-25 2018-11 P1122R1 Library  
P1131R2 Core Issue 2292: simple-template-id is ambiguous between class-name and type-name Jens Maurer 2018-11-07 2018-11 P1131R1 Core Adopted 2018-11
P1132R2 out_ptr - a scalable output pointer abstraction JeanHeyd Meneide, Todor Buyukliev, Isabella Muerte 2018-11-26 2018-11 P1132R1 Library Evolution, Library  
P1141R2 Yet another approach for constrained declarations Ville Voutilainen, Thomas Köppe, Andrew Sutton, Herb Sutter, Gabriel Dos Reis, Bjarne Stroustrup, Jason Merrill, Hubert Tong, Eric Niebler, Casey Carter, Tom Honermann, Erich Keane, Walter E. Brown, Michael Spertus, Richard Smith 2018-11-09 2018-11 P1141R1 Evolution Adopted 2018-11
P1144R1 Object relocation in terms of move plus destroy Arthur O'Dwyer 2018-11-24 2018-11 P1144R0 Evolution, Library Evolution  
P1155R1 More implicit moves Arthur O'Dwyer, David Stone 2018-11-25 2018-11 P1155R0 Evolution  
P1161R1 Deprecate uses of the comma operator in subscripting expressions Corentin Jabot 2018-10-07 2018-11 P1161R0 Evolution  
P1164R0 Make create_directory() Intuitive Nicolai Josuttis 2018-08-29 2018-11   Library  
P1165R1 Make stateful allocator propagation more consistent for operator+(basic_string) Tim Song 2018-11-10 2018-11 P1165R0 Library Adopted 2018-11
P1177R1 Package Ecosystem Plan René Rivera 2018-11-15 2018-11 P1177R0 SG15  
P1184R1 A Module Mapper Nathan Sidwell 2018-11-12 2018-11 P1184R0 SG15  
P1192R1 Experience report - integrating Executors with Parallel Algorithms Thomas Rodgers 2018-11-05 2018-11 P1192R0 SG1, Library Evolution  
P1193R0 Explicitly Specified Returns for (Implicit) Conversions JeanHeyd Meneide 2018-11-26 2018-11   Evolution, Evolution Incubator  
P1208R1 Adopt source_location from Library Fundamentals V3 for C++20 Corentin Jabot, Robert Douglas 2018-09-21 2018-11 P1208R0 Library Evolution, Library  
P1213R1 Global Module Fragment Is Unnecessary Nathan Sidwell 2018-11-12 2018-11 P1213R0 Evolution  
P1233R1 Shift-by-negative in shift_left and shift_right Ashley Hedberg, Matt Calabrese, Bryce Adelstein Lelbach 2018-11-25 2018-11 P1233R0 Library  
P1236R1 Alternative Wording for P0907R4 Signed Integers are Two's Complement Jens Maurer 2018-11-09 2018-11 P1236R0 Core Adopted 2018-11
P1242R1 Single-file modules with the Atom semantic properties rule Jeff Snyder, Richard Smith 2018-12-01 2018-11 P1242R0 Evolution  
P1248R1 Remove CommonReference requirement from StrictWeakOrdering Tomasz Kamiński 2018-11-04 2018-11 P1248R0 Library Evolution Adopted 2018-11
P1251R1 A more constexpr bitset Morris Hafner 2018-11-26 2018-11 P1251R0 Library Evolution, Library  
P1252R1 Ranges Design Cleanup Casey Carter 2018-11-15 2018-11 P1252R0 Library  
P1255R1 A view of 0 or 1 elements: view::maybe Steve Downey 2018-11-26 2018-11 P1255R0 Library Evolution  
P1259R1 Merge most of Networking TS into C++ Working Draft Detlef Vollmann 2018-11-04 2018-11 P1259R0 SG1, Library Evolution  
P1289R1 Access control in contract conditions J. Daniel Garcia, Ville Voutilainen 2018-11-08 2018-11 P1289R0 Evolution Adopted 2018-11
P1290R0 Avoiding undefined behavior in contracts J. Daniel Garcia 2018-11-26 2018-11   Evolution  
P1293R1 ostream_joiner Mike Spertus, Nathan Wilson 2018-11-25 2018-11 P1293R0 Library Evolution, Library  
P1299R1 Module Preamble is Unnecessarily Fragile Nathan Sidwell 2018-10-10 2018-11 P1299R0 Evolution  
P1299R3 Module Preamble is Unnecessarily Fragile Nathan Sidwell 2018-11-13 2018-11 P1299R2 Evolution  
P1301R1 [[nodiscard("should have a reason")]] JeanHeyd Meneide, Isabella Muerte 2018-11-26 2018-11 P1301R0 Evolution, Core, Library Evolution, Library  
P1314R1 unique_val: a default-on-move type Miguel Ojeda 2018-11-26 2018-11 P1314R0 Library Evolution, Library  
P1315R1 secure_val: a secure-clear-on-move type Miguel Ojeda 2018-11-26 2018-11 P1315R0 Library Evolution, Library  
P1324R0 RE: Yet another approach for constrained declarations Mihail Naydenov 2018-10-12 2018-11   Evolution  
P1327R0 Allowing dynamic_cast, polymorphic typeid in Constant Expressions Peter Dimov 2018-10-28 2018-11   Evolution  
P1327R1 Allowing dynamic_cast, polymorphic typeid in Constant Expressions Peter Dimov, Vassil Vassilev, Richard Smith 2018-11-08 2018-11 P1327R0 Evolution Adopted 2018-11
P1328R0 Making std::type_info::operator== constexpr Peter Dimov 2018-10-28 2018-11   Evolution  
P1330R0 Changing the active member of a union inside constexpr Louis Dionne, David Vandevoorde 2018-11-10 2018-11   Evolution, Core Adopted 2018-11
P1332R0 Contract Checking in C++: A (long-term) Road Map Joshua Berne, Nathan Burgers, Hyman Rosen, John Lakos 2018-11-26 2018-11   WG21  
P1333R0 Assigning Concrete Semantics to Contract-Checking Levels at Compile Time Joshua Berne, John Lakos 2018-11-26 2018-11   Evolution  
P1334R0 Specifying Concrete Semantics Directly in Contract-Checking Statements Joshua Berne, John Lakos 2018-11-26 2018-11   Evolution  
P1335R0 "Avoiding undefined behavior in contracts" [P1290R0] Explained John Lakos 2018-11-26 2018-11   Evolution  
P1338R0 WG21 2018-11 San Diego Record of Discussion Nina Dinka Ranns 2018-11-26 2018-11   WG21  
P1341R0 Unifying Asynchronous APIs in the Standard Library Lewis Baker 2018-11-25 2018-11   SG1, Library Evolution  
P1342R0 Unifying Coroutines TS and Core Coroutines Lewis Baker 2018-11-19 2018-11   Evolution  
P1347R0 Modules: ADL & Internal Linkage Davis Herring, Nathan Sidwell 2018-11-21 2018-11   Evolution  
P1348R0 An Executor Property for Occupancy of Execution Agents David S. Hollman, Jared Hoberock, Lee Howes, Michael Garland, H. Carter Edwards 2018-11-25 2018-11   SG1, Library Evolution  
P1349R0 Better Integration of Sender Executors Vinnie Falco 2018-11-06 2018-11   SG1, Library Evolution  
P1350R0 Core Language Working Group "tentatively ready" Issues for the November, 2018 (San Diego) meeting William M. Miller 2018-11-07 2018-11   WG21 Adopted 2018-11
P1353R0 Missing Feature Test Macros John Spicer 2017-11-09 2018-11   Core, Library Adopted 2018-11
P1355R0 Exposing a narrow contract for ceil2 Chris Kennelly 2018-11-24 2018-11   SG6, Library Evolution, Library  
P1356R0 Coroutine TS ready issues (25 and 27) Gor Nishanov 2018-11-08 2018-11   WG21  
P1360R0 Towards Machine Learning for C++: Study Group 19 Michael Wong, Vincent Reverdy, Robert Douglas, Emad Barsoum, Sarthak Pati, Peter Goldsborough, Franke Seide 2018-11-26 2018-11   WG21  
P1362R0 Incremental Approach: Coroutine TS + Core Coroutines Gor Nishanov 2018-11-15 2018-11   Evolution  
P1364R0 Fibers under the magnifying glass Gor Nishanov 2018-11-20 2018-11   SG1, Evolution  
P1365R0 Using Coroutine TS with zero dynamic allocations Gor Nishanov 2018-11-24 2018-11   Evolution  
P1367R0 Not All Agents Have TLS Olivier Giroux 2018-11-11 2018-11   SG1  
P1368R0 Multiplication and division of fixed-point numbers S. Davis Herring 2018-11-20 2018-11   SG6  
P1369R0 Guidelines for Formulating Library Semantics Specifications Walter E. Brown 2018-11-25 2018-11   Library Evolution, Library  
P1370R0 Generic numerical algorithm development with(out) numeric_limits Mark Hoemmen, Damien Lebrun-Grandie 2018-11-21 2018-11   SG6, Library Evolution Incubator, Library Evolution  
P1372R0 Giving atomic_ref implementers more flexibility by providing customization points for non-lock-free implementation David S. Hollman 2018-11-25 2018-11   SG1, Library Evolution  
P1373R0 Syntax alternatives for modules Bjarne Stroustrup 2018-11-20 2018-11   Evolution  
P1374R0 Resolving LWG #2307 for C++20: Consistently Explicit Constructors Alisdair Meredith 2018-11-22 2018-11   Evolution, Library Evolution, Library  
P1375R0 More Constrained: Apples or Oranges? On the road to semantic constraint matching Hubert S.K. Tong 2018-11-26 2018-11   Evolution  
P1376R0 Summary of freestanding evening session discussions Ben Craig 2018-11-24 2018-11   WG21  
P1378R0 std::string_literal JeanHeyd Meneide 2018-11-26 2018-11   SG16  
P1380R0 Ambiguity and Insecurities with Three-Way Comparison Lawrence Crowl 2018-11-26 2018-11   Core  
P1381R0 Reference capture of structured bindings Nicolas Lesser 2018-11-26 2018-11   Evolution  

How To Parallelise CSV Reader with C++17 - new chapter in C++17 in Detail

Just before Holiday Break, I've added a new chapter to my book:

How To Parallelise CSV Reader with C++17 - new chapter in C++17 in Detail

By Bartlomiej Filipek

From the new chapter:

In the new chapter, you’ll see how to build a tool that works on CSV files, parses lines into sales records and then performs calculations on the data. The code uses many C++17 features. You’ll see how easy it is to add parallel execution to selected algorithms and have a performance improvement across the whole application. In the end, we’ll discuss problems that we found along the way and possible future enhancements.

ReSharper C++ 2018.3 is released

ReSharper C++ extension makes Microsoft Visual Studio a much better C++ IDE. ReSharper C++ v2018.3 has had literally every smart feature in it tuned, making them work more precisely on modern C++ code.

ReSharper C++ 2018.3: every bit better!

by Anastasia Kazakova

From the article:

ReSharper C++ 2018.3 brought the following enhancements:

  • Performance improvements meaning a more responsive editor
  • Formatter: auto-detection of formatter settings, and C++ naming schemes
  • More information in Parameter info, especially on dependent code. Name hints. Better error diagnostics in templated code
  • New context actions and inspections
  • Support for Catch 2.5
  • Enhanced C++/CLI support and support for Unreal Engine projects
  • Visual Studio 2019 Preview 1 support

 

 

Free PVS-Studio for those who develops open source projects

On the New 2019 year's eve, a PVS-Studio team decided to make a nice gift for all contributors of open-source projects hosted on GitHub or Bitbucket. They are given free usage of PVS-Studio static analyzer for development of open source projects.

Free PVS-Studio for those who develops open source projects

by Andrey Karpov

From the article:

Everyone who wishes, can get a free license for 1 year. To get the license, you need to:

  1. Go to the page: https://www.viva64.com/en/open-source-license/
  2. Enter the e-mail, where you will be sent a license key;
  3. Enter the link to your GitHub/Bitbucket profile;
  4. Send a request for a free license.

A brief introduction to Concepts – Part 1—Glennan Carnie

Useful new feature.

A brief introduction to Concepts – Part 1

by Glennan Carnie

From the article:

Concepts allow us to express constraints on template types with the goals of making generic code

  • Easier to use
  • Easier to debug
  • Easier to write

In this pair of articles we’ll look at the basics of Concepts, their syntax and usage.  To be open up-front:  this article is designed to get you started, not to make you an expert on Concepts or generic code...

CppCast Episode 180: Semantic Merge for C++ code, Plastic SCM and more on version control

Episode 180 of CppCast the first podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Pablo Santos from Códice Software the company that develops a merge tool that parses and merges even refactored C++ code:

CppCast Episode 180: Semantic Merge for C++ code, Plastic SCM and more on version control

About the interviewee:

Prior to entering start-up mode to launch Plastic SCM back in 2005, Pablo worked as R&D engineer in fleet control software development (GMV, Spain) and later digital television software stack (Sony, Belgium). Then he moved to a project management position (GCC, Spain) leading the evolution of an ERP software package for industrial companies. During these years he became an expert in version control and software configuration management working as a consultant and participating in several events as a speaker. Pablo founded Codice SoftwaLogo-semantic-vertical-negative.pngre in 2005 and since then is focused on his role as chief engineer designing and developing Plastic SCM and SemanticMerge among other SCM products.

Did anybody consider adding a language pragma to C++?

Interesting question.

Did anybody consider adding a language pragma to C++?

From the article:

For people who don't know, language pragmas are the way that ghc (Glasgow Haskell Compiler) allows you to turn on and off language features. In C++, this would mean that I can write something like:

#language <no_c_style_cast>

And that would disable C-style cast for that source file. Don't you think that it would be useful to standardize this to allow people to willingly disable some old legacy C++ features in newer code?

The SoA Vector – Part 1: Optimizing the Traversal of a Collection—Sidney Congard

It's all for speed.

The SoA Vector – Part 1: Optimizing the Traversal of a Collection

by Sidney Congard

From the article:

I like C++ because it offers a good compromise between writing expressive and fast code. But, I discovered a problem where I didn’t know any way to hide the implementation detail away from its use: The “Structure of Arrays” (SoA) versus the “Array of Structures” (AoS) problem.

This is the first part of a series of two articles:

  • what ‘SoA’ is about and what benefits it brings (part 1)
  • how to implement an SoA vector in C++ (part 2)

So let’s see what those SoA and AoS are all about...

Boost 1.69.0

New release.

Boost 1.69.0

From the article:

Notes for non-Windows users
The Boost build system now supports visibilities. If you are building shared libraries, they will use hidden visibility by default. As a result Boost shared libraries become smaller, load faster and have less chances to get a symbol collision.

See Boost.Build visibility and local-visibility for more info.

To disable that feature you can use use a command line ./b2 visibility=global to build...