October 2018

C++ Day 2018

A full day of C++ in Italy:

C++ Day 2018

November 24, 2018

Pavia (Italy)


In a nutshell

The C++ Day 2018 is a full-day event entirely dedicated to the C++ language, hosted in Pavia (Italy).

The event consists in some technical sessions (ITA and ENG) and networking.

Keynote: HPX : High performance computing in C++ with concurrency, parallelism and futures by John Biddiscombe from the Swiss National Supercomputing Centre in Lugano.


Who should attend the C++ Day 2018?

This event is made by C++ professionals for C++ professionals, students and enthusiasts. Whoever is interested in the C++ language and is keen on meeting the Italian C++ ecosystem is welcome!


What can I find in the C++ Day 2018?

The agenda consists of 1x90' keynote8x50' and 2x20' tech talks and 2.5 hours allocated for networking.

Topcis of the tech talks:

  • C++20
  • A.I.
  • Reflection
  • GIS in C++
  • Algorithms & Optimization
  • Scientific Computing
  • Python Integration
  • Metaprogramming


You can refer to the detailed program for more information.

When and Where will the C++ Day 2018 take place?

The event will be held on November 24, 2018 at University of Pavia, in Pavia (Italy).

Check-in opens at 8.30 AM, the main event begins at 9.45 AM and will last for a full day.

Who supports this event?

The Italian C++ Community co-organizes the event with some students of the University of Pavia.

We don't have sponsorships yet. Please get in touch if you want to support/sponsor the event!


Do I need to register?

The C++ Day 2018 is free, but you must register to facilitate the organization of the event.

You can register here.

PMR (Polymorphic Memory Resources) fully described -- Nico Josuttis

PMR (polymorphic memory resources) are now fully described in:

C++17 - The Complete Guide

by Nico Josuttis

About the article:

This includes:

  • How to use standard memory resources
  • How to define own memory resources (such as a sophisticated new tracker)
  • How to provide PMR support for own types

With this, using a map or unordered_map with elements located close to each other is really easy now.

And if you have to avoid heap memory allocation, this chapter is a must.



2018-10 pre-San Diego mailing available (part 2 of 2)

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

This post is part 2 of 2.


WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup Disposition
P1161R0 Deprecate uses of the comma operator in subscripting expressions Corentin Jabot 2018-10-07 2018-10   Evolution  
P1163R0 Explicitly Implicifying explicit Constructors Nevin Liber 2018-08-31 2018-10   Library  
P1165R0 Fixing allocator usage for operator+(basic_string) Tim Song 2018-10-06 2018-10   Library  
P1167R0 Improving function templates with Class Template Argument Deduction Mike Spertus 2018-10-08 2018-10   Evolution  
P1168R0 How to make Terse Notation soar with Class Template Argument Deduction Mike Spertus 2018-10-08 2018-10   Evolution  
P1169R0 static operator() Barry Revzin 2018-10-07 2018-10   Evolution, Library Evolution  
P1170R0 Overload sets as function parameters Barry Revzin 2018-10-08 2018-10   Evolution, Library Evolution  
P1171R0 Synchronously waiting on asynchronous operations Lewis Baker 2018-10-07 2018-10   SG1, Library Evolution  
P1172R0 The Concept of Memory Allocator Mingxin Wang 2018-10-03 2018-10   Library Evolution, Library  
P1175R0 A simple and practical optional reference for C++ JeanHeyd Meneide 2018-10-06 2018-10   Library Evolution, Library  
P1177R0 Package Ecosystem Plan Rene Rivera 2018-10-06 2018-10   SG15  
P1178R0 C++ Compile Rene Rivera 2018-10-06 2018-10   SG15, Library Evolution  
P1179R0 Lifetime safety: Preventing common dangling Herb Sutter 2018-09-25 2018-10   WG21  
P1180R0 Response to P1156 Richard Smith 2018-09-18 2018-10   Evolution  
P1181R0 Proposing unless Morwenn Ed 2018-09-08 2018-10   Evolution  
P1182R0 New names for the power-of-2 templates (and their header) Gennaro Prot 2018-09-13 2018-10   Library Evolution  
P1184R0 A Module Mapper Nathan Sidwell 2018-10-05 2018-10   SG15  
P1185R0 <=> != == Barry Revzin 2018-10-07 2018-10   Evolution  
P1186R0 When do you actually use <=>? Barry Revzin 2018-10-07 2018-10   Evolution, Library Evolution  
P1187R0 A type trait for std::compare_3way()'s type Barry Revzin 2018-10-07 2018-10   Library Evolution  
P1190R0 I did not order this! Why is it on my bill? David Stone 2018-08-06 2018-10   Evolution, Library Evolution  
P1191R0 Adding operator<=> to types that are not currently comparable David Stone 2018-08-22 2018-10   Library Evolution  
P1192R0 Experience report - integrating Executors with Parallel Algorithms Thomas Rodgers 2018-10-08 2018-10   SG1, Library Evolution  
P1194R0 The Compromise Executors Proposal: A lazy simplification of P0443 Lee Howes, Eric Niebler, Kirk Shoop, Bryce Lelbach, David S. Hollman 2018-10-08 2018-10   SG1, Library Evolution  
P1195R0 Making <system_error> constexpr Peter Dimov 2018-09-27 2018-10   Library Evolution  
P1196R0 Value-based std::error_category comparison Peter Dimov 2018-09-27 2018-10   Library Evolution  
P1197R0 A non-allocating overload of error_category::message() Peter Dimov 2018-09-27 2018-10   Library Evolution  
P1198R0 Adding error_category::failed() Peter Dimov 2018-09-28 2018-10   Library Evolution  
P1199R0 A simple proposal for unifying generic and object-oriented programming Mike Spertus 2018-08-10 2018-10   Evolution  
P1200R0 High noon for the 2D Graphics proposal Guy Davidson, Roger Orr, Ville Voutilainen, Jose Daniel Garcia Sanchez, Jean-Paul Rigault, Matevz Tadel 2018-10-06 2018-10   WG21  
P1201R0 Variant direct comparisons Oleg Fatkhiev, Antony Polukhin 2018-10-02 2018-10   Library Evolution  
P1202R0 Asymmetric fences David Goldblatt 2018-10-06 2018-10   SG1  
P1203R0 Modular main() Boris Kolpackov, Richard Smith 2018-10-05 2018-10   Evolution  
P1204R0 Canonical Project Structure Boris Kolpackov 2018-10-08 2018-10   SG15  
P1205R0 Teleportation via co_await Olivier Giroux, JF Bastien 2018-09-28 2018-10   SG1, Core  
P1206R0 Range constructors for standard containers and views Corentin Jabot, Christopher Di Bella 2018-10-07 2018-10   Library  
P1207R0 Movability of Single-pass Iterators Corentin Jabot 2018-08-20 2018-10   Library Evolution  
P1208R0 Adopt source_location from Library Fundamentals V3 for C++20 Corentin Jabot, Robert Douglas 2018-10-07 2018-10   Library Evolution, Library  
P1209R0 Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20 Alisdair Meredith, Stephan T. Lavavej 2018-10-04 2018-10   Library Evolution  
P1210R0 Completing the Rebase of Library Fundamentals, Version 3, Working Draft Alisdair Meredith 2018-09-30 2018-10   Library Evolution, Library  
P1212R0 Modules and Freestanding Ben Craig 2018-10-06 2018-10   Evolution, Library Evolution  
P1213R0 Global Module Fragment is Unnecessary Nathan Sidwell 2018-10-05 2018-10   Evolution  
P1214R0 Pointer to Member Functions and Member Objects are just Callables! JeanHeyd Meneide 2018-10-06 2018-10   Evolution  
P1217R0 Out-of-thin-air, revisited, again Hans-J. Boehm 2018-10-07 2018-10   SG1  
P1218R0 Redefinitions in Legacy Imports Nathan Sidwell 2018-10-05 2018-10   Evolution  
P1219R0 Homogeneous variadic function parameters James Touton 2018-10-08 2018-10   Evolution  
P1220R0 Controlling When Inline Functions are Emitted Chris Kennelly 2018-09-28 2018-10   Evolution  
P1221R0 Parametric Expressions Jason Rice 2018-10-03 2018-10   Evolution  
P1222R0 A Standard flat_set Zach Laine 2018-10-02 2018-10   Library Evolution  
P1223R0 find_backward Zach Laine 2018-10-02 2018-10   Library Evolution  
P1224R0 C++ Standard Library Issues to be moved in San Diego Marshall Clow 2018-10-08 2018-10   WG21  
P1225R0 Feedback on 2D Graphics JF Bastien 2018-10-02 2018-10   Library Evolution  
P1227R0 Signed size() functions Jorg Brown 2018-10-08 2018-10   Library Evolution  
P1229R0 Labelled Parameters Jorg Brown 2018-10-08 2018-10   Evolution  
P1230R0 Recursive Type Template Instantiation Mingxin Wang 2018-10-03 2018-10   Evolution, Core  
P1231R0 Proposal for Study Group: C++ Education JC van Winkel, Christopher Di Bella 2018-10-08 2018-10   WG21  
P1232R0 Integrating executors with the standard library through customization Lee Howes, Eric Niebler, Kirk Shoop, Lewis Baker, Robert Geva 2018-10-08 2018-10   SG1  
P1233R0 Shift-by-negative in shift_left and shift_right Ashley Hedberg, Matt Calabrese 2018-10-02 2018-10   Library Evolution, Library  
P1235R0 Implicit constexpr Bryce Adelstein Lelbach, Hana Dusíková 2018-10-08 2018-10   Evolution  
P1236R0 Alternative Wording for P0907R4 Signed Integers are Two's Complement Jens Maurer 2018-10-08 2018-10   Core  
P1237R0 SG16: Unicode meeting summaries 2018/07/11 - 2018/10/03 Tom Honermann 2018-10-08 2018-10   SG16  
P1238R0 SG16: Unicode Direction Tom Honermann, Corentin Jabot, JeanHeyd Meneide, Mark Zeren, Martinho Fernandes, Peter Bindels, Steve Downey, Zach Laine 2018-10-08 2018-10   WG21  
P1239R0 Placed Before Daniel Lustig 2018-10-07 2018-10   SG1  
P1240R0 Scalable Reflection in C++ Andrew Sutton, Faisal Vali, Daveed Vandevoorde 2018-10-08 2018-10   SG7, Evolution  
P1241R0 In support of merging coroutines into C++20 Lee Howes, Eric Niebler, Lewis Baker 2018-10-08 2018-10   SG1  
P1242R0 Single-file modules with the Atom semantic properties rule Jeff Snyder 2018-10-08 2018-10   Evolution  
P1243R0 Rangify New Algorithms Dan Raviv 2018-10-07 2018-10   Library Evolution, Library  
P1244R0 Dependent Execution for a Unified Executors Proposal for C++ Jared Hoberock, Michael Garland, Chris Kohlhoff, Chris Mysen, Carter Edwards, Gordon Brown 2018-10-08 2018-10   SG1, Library Evolution  
P1245R0 export module containing [[attribute]]; Bruno Cardoso Lopes, JF Bastien 2018-10-08 2018-10   Evolution  
P1246R0 The no_float function attribute Bruno Cardoso Lopes, JF Bastien 2018-10-08 2018-10   Evolution  
P1247R0 Disabling static destructors: introducing no_destroy and always_destroy attributes Bruno Cardoso Lopes, JF Bastien, Erik Pilkington 2018-10-08 2018-10   Evolution  
P1248R0 Fixing 'Relation's Tomasz Kamiński 2018-10-07 2018-10   Library Evolution  
P1249R0 std::forward from std::initializer_list Alex Christensen 2018-10-03 2018-10   Library Evolution  
P1250R0 Extension by inspecting members of User Defined Types? Titus Winters, Ashley Hedberg, Eric Fiselier 2018-10-04 2018-10   Library Evolution  
P1251R0 A more constexpr bitset Morris Hafner 2018-10-04 2018-10   Library Evolution  
P1252R0 Ranges Design Cleanup Casey Carter 2018-10-07 2018-10   Library Evolution, Library  
P1254R0 Notes on C++ Package Management Steve Downey 2018-10-07 2018-10   SG15  
P1255R0 A view of 0 or 1 elements: view::maybe Steve Downey 2018-10-07 2018-10   Library Evolution  
P1256R0 Executors Should Go To A TS Detlef Vollmann 2018-10-07 2018-10   SG1, Library Evolution  
P1258R0 Don't Make C++ Unimplementable On Small CPUs Detlef Vollmann 2018-10-08 2018-10   SG1, Library Evolution  
P1259R0 Merge most of Networking TS into C++ Working Draft Detlef Vollmann 2018-10-08 2018-10   SG1, Library Evolution  
P1260R0 Pattern Matching Michael Park 2018-05-22 2018-10   Evolution  
P1261R0 Supporting Pipelines in C++ Michael Wong, Daniel Garcia, Ronan Keryell 2018-10-08 2018-10   SG1, SG14  
P1263R0 Controlling the instantiation of vtables and RTTI Louis Dionne 2018-10-07 2018-10   Evolution  
P1264R0 Revising the wording of stream input operations Louis Dionne 2018-10-07 2018-10   Library  
P1267R0 Custom Constraint Diagnostics Hana Dusíková, Bryce Adelstein Lelbach 2018-10-08 2018-10   Evolution  
P1269R0 Three Years with the Networking TS Jason Carey 2018-10-07 2018-10   Evolution, Library Evolution  
P1271R0 Move resource_adaptor from Library TS to the C++ WP Pablo Halpern 2018-10-05 2018-10   Library Evolution  
P1272R0 Byteswapping for fun&&nuf Isabella Muerte 2018-07-12 2018-10   SG6, SG14, Library Evolution  
P1273R0 86 The Absurd (From Exceptions) Isabella Muerte 2018-10-07 2018-10   Evolution  
P1274R0 Bang For The Buck Isabella Muerte 2018-07-15 2018-10   Evolution  
P1275R0 Desert Sessions: Improving hostile environment interactions Isabella Muerte 2018-10-06 2018-10   SG15, SG16, Library Evolution  
P1276R0 Void Main Isabella Muerte 2018-09-15 2018-10   Evolution  
P1277R0 Subscripts On Parade Isabella Muerte 2018-10-07 2018-10   Evolution  
P1278R0 offsetof For the Modern Era Isabella Muerte 2018-10-06 2018-10   Library Evolution  
P1279R0 std::breakpoint Isabella Muerte 2018-10-05 2018-10   SG14, Library Evolution  
P1280R0 Integer Width Literals Isabella Muerte 2018-10-05 2018-10   Library Evolution  
P1281R0 Feature Presentation Isabella Muerte 2018-10-07 2018-10   SG15  
P1282R0 Ceci N’est Pas Une Pipe: Adding a workflow operator to C++ Isabella Muerte 2018-09-27 2018-10   Evolution  
P1283R0 Sharing is Caring Isabella Muerte 2018-10-06 2018-10   Evolution  
P1284R0 Allowing Inlining of Replaceable Functions Chris Kennelly 2018-10-05 2018-10   Evolution  
P1285R0 Improving Completeness Requirements for Type Traits Walter E. Brown 2018-10-05 2018-10   Library  
P1286R0 Contra CWG DR1778 Richard Smith 2018-10-05 2018-10   Evolution  
P1287R0 Supporting async use-cases for interrupt_token Lewis Baker, Kirk Shoop 2018-10-08 2018-10   SG1, Library Evolution  
P1288R0 Coroutine concepts and metafunctions Lewis Baker 2018-10-07 2018-10   SG1, Library Evolution  
P1289R0 Access control in contract conditions J. Daniel Garcia, Ville Voutilainen 2018-10-08 2018-10   Evolution  
P1291R0 std::ranges::less<> Should Be More! Walter E. Brown 2018-10-07 2018-10   Library Evolution  
P1292R0 Customization Point Functions Matt Calabrese 2018-10-08 2018-10   Evolution  
P1293R0 ostream_joiner Mike Spertus, Nathan Wilson 2018-10-07 2018-10   Library Evolution  
P1294R0 Proposed resolution for US104: Allocator-aware regular expressions (rev 3) Michael Spertus, John Maddock 2018-10-06 2018-10   Library  
P1295R0 Spaceship library update Tomasz Kamiński 2018-10-07 2018-10   Library Evolution  
P1296R0 [[assert: std::disjoint(A,nA, B,nB)]]: Contract assertions as an alternate spelling of ‘restrict’ Phil Miller, Justin Szaday 2018-10-08 2018-10   Evolution  
P1298R0 Reserve more freedom for atomic_ref<> implementers Olivier Giroux 2018-10-08 2018-10   SG1  
P1299R0 Module Preamble is Unnecessary Nathan Sidwell 2018-10-07 2018-10   Evolution  
P1300R0 Remember the FORTRAN Jussi Pakkanen, Isabella Muerte, Peter Bindels 2018-10-08 2018-10   SG15, Evolution  
P1301R0 nodiscard should have a reason JeanHeyd Meneide, Isabella Muerte 2018-10-07 2018-10   Evolution, Library Evolution, Library  
P1302R0 Implicit Module Partition Lookup Isabella Muerte, Richard Smith 2018-10-07 2018-10   Evolution  
P1303R0 Inline Module Partitions Isabella Muerte 2018-10-07 2018-10   Evolution  
P1304R0 Simplifying Extern Template Isabella Muerte 2018-10-07 2018-10   Evolution  
P1305R0 Deprecate The Addressof Operator Isabella Muerte 2018-10-07 2018-10   Evolution  
P1306R0 Expansion statements Andrew Sutton, Sam Goodrick, Daveed Vandevoorde 2018-10-08 2018-10   Evolution  
P1307R0 weak_equality considered harmful Tony Van Eerd 2018-10-08 2018-10   Evolution  
P1308R0 Pattern Matching David Sankel, Dan Sarginson, Sergei Murzin 2018-10-07 2018-10   Evolution  
P1310R0 Unifying the many ways to compare David Stone 2018-10-07 2018-10   Library Evolution  
P1312R0 Comparison Concepts David Stone 2018-09-24 2018-10   Library Evolution  
P1313R0 Let's Talk About Package Specification Matthew Woehlke 2018-10-07 2018-10   SG15  
P1314R0 unique_val: a default-on-move Miguel Ojeda 2018-10-08 2018-10   Library Evolution, Library  
P1315R0 secure_val: a secure-clear-on-move type Miguel Ojeda 2018-10-08 2018-10   Library Evolution, Library  
P1316R0 A when_all() operator for coroutines Lewis Baker 2018-10-08 2018-10   SG1, Library Evolution  
P1317R0 Remove return type deduction in std::apply Aaryaman Sagar 2018-10-07 2018-10   Library Evolution  
P1318R0 Tuple application traits Aaryaman Sagar 2018-10-08 2018-10   Library Evolution  
P1319R0 Changes between C++11 and C++14 Thomas Köppe 2018-10-08 2018-10   WG21  
P1320R0 Allowing contract predicates on non-first declarations Ville Voutilainen 2018-10-03 2018-10   Evolution  
P1321R0 UB in contract violations Ville Voutilainen 2018-10-07 2018-10   SG12, Evolution  
P1322R0 Networking TS enhancement to enable custom I/O executors Christopher Kohlhoff 2018-10-08 2018-10   SG1, Library Evolution  
P1323R0 Contract postconditions and return type deduction Hubert S.K. Tong 2018-10-08 2018-10   Evolution, Core  


2018-10 pre-San Diego mailing available (part 1 of 2)

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

This post is part 1 of 2.


WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup Disposition
2018-10 pre-San Diego
N4766 Working Draft, C++ Extensions for Reflection David Sankel 2018-08-11 2018-10 N4746 WG21
N4767 Reflection TS - Editor’s Report David Sankel 2018-10-07 2018-10 WG21
N4768 Business Plan and Convener's Report: ISO/IEC JTC1/SC22/WG21 (C++) Herb Sutter 2018-08-14 2018-10 WG21
N4769 PL22.16/WG21 draft agenda: 5-10 November 2018, San-Diego, USA John Spicer 2018-08-27 2018-10 WG21
N4770 2019 Kona meeting information (rev. 1) Herb Sutter 2018-08-28 2018-10 WG21
N4771 Working Draft, C++ Extensions for Networking Jonathan Wakely 2018-10-08 2018-10 N4734 WG21
N4772 Networking TS - Editor's Report Jonathan Wakely 2018-10-08 2018-10 WG21
N4773 Working Draft, C++ Extensions for Parallelism Version 2 Jared Hoberock 2018-10-08 2018-10 N4755 WG21
N4774 Parallelism TS Editor’s Report, pre-San Diego mailing Jared Hoberock 2018-10-08 2018-10 WG21
N4775 Working Draft, C++ Extensions for Coroutines Gor Nishanov 2018-10-07 2018-10 N4760 WG21
N4776 Editor's report for the Coroutines TS Gor Nishanov 2018-10-07 2018-10 WG21
N4777 WG21 telecon meeting: Pre-San Diego Herb Sutter 2018-10-06 2018-10 WG21
N4778 Working Draft, Standard for Programming Language C++ Richard Smith 2018-10-08 2018-10 N4762 WG21
N4779 Editors' Report - Programming Languages - C++ Richard Smith 2018-10-08 2018-10 WG21
N4780 2019 Cologne Meeting Invitation and Information Nico Josuttis 2018‐10‐08 2018-10 WG21
N4781 WG21 2018-06 Rapperswil Minutes Nina Dinka Ranns 2018-10-07 2018-10 N4753 WG21
P0009r8 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, Mark Hoemmen 2018-10-07 2018-10 P0009r7 Library
P0052r9 Generic Scope Guard and RAII Wrapper for the Standard Library Peter Sommerlad, Andrew L. Sandoval 2018-10-03 2018-10 P0052r8 Library
P0095R2 Language Variants David Sankel, Dan Sarginson, Sergei Murzin 2018-10-07 2018-10 P0095R1 Evolution
P0124r6 Linux-Kernel Memory Model Paul McKenney, Ulrich Weigand, Andrea Parri, Boqun Feng 2018-09-27 2018-10 P0124R5 SG1
P0192R4 `short float` and fixed-size floating point types Michał Dominiak, Bryce Adelstein Lelbach, Boris Fomitchev, Sergei Nikolaev 2018-10-08 2018-10 P0192R3 Evolution, Library Evolution
P0201R4 A polymorphic value-type for C++ Jonathan Coe, Sean Parent 2018-10-05 2018-10 P0201R3 Library Evolution, Library
P0211R2 Allocator-aware library wrappers for dynamic allocation Thomas Köppe 2018-10-08 2018-10 P0211R1 Library Evolution
P0275R4 A Proposal to add Classes and Functions Required for Dynamic Library Load Antony Polukhin 2018-10-01 2018-10 P0275R3 Library Evolution
P0325R2 to_array from LFTS with updates Zhihao Yuan 2018-07-11 2018-10 P0325R1 Library Evolution
P0330R2 Literal Suffixes for ptrdiff_t and size_t JeanHeyd Meneide, Rein Halbersma 2018-10-01 2018-10 P0330R1 Evolution, Core
P0335R1 Context Tokens for Parallel Algorithms Pablo Halpern 2018-10-07 2018-10 P0335R0 SG1
P0339R5 polymorphic_allocator<> as a vocabulary type Pablo Halpern, Dietmar Kühl 2018-10-07 2018-10 P0339R4 Library
P0350R2 Integrating simd with parallel algorithms Matthias Kretz 2018-10-08 2018-10 P0350R1 Library Evolution
P0356R4 Simplified partial function application Tomasz Kamiński 2018-10-04 2018-10 P0356R3 Library
P0408R5 Efficient Access to basic_stringbuf’s Buffer Peter Sommerlad 2018-10-01 2018-10 P0408R4 Library
P0429R5 A Standard flat_map Zach Laine 2018-10-07 2018-10 P0429R4 Library
P0437R1 Numeric Traits for the Standard Library Walter E. Brown 2018-10-07 2018-10 P0437R0 Library Evolution, Library
P0443r9 A Unified Executors Proposal for C++ Jared Hoberock, Michael Garland, Chris Kohlhoff, Chris Mysen, Carter Edwards, Gordon Brown 2018-10-08 2018-10 P0443R8 SG1, Library Evolution
P0468R1 An Intrusive Smart Pointer Isabella Muerte 2018-06-19 2018-10 P0468R0 SG1, Library Evolution, Library
P0480R1 Structured bindings with explicit types Ville Voutilainen 2018-10-08 2018-10 P0480R0 Evolution
P0482R5 char8_t: A type for UTF-8 characters and strings Tom Honermann 2018-10-06 2018-10 P0482R4 Core, Library
P0487R1 Fixing operator>>(basic_istream&, CharT*) (LWG 2499) Zhihao Yuan 2018-08-23 2018-10 P0487R0 Library
P0533R3 constexpr for <cmath> and <cstdlib> Edward J. Rosten, Oliver J. Rosten 2018-08-05 2018-10 P0533R2 Library Evolution, Library
P0549R4 Adjuncts to std::hash Walter E. Brown 2018-10-07 2018-10 P0549R3 Library Evolution, Library
P0571R2 Type Requirements for <numeric> Algorithms Bryce Adelstein Lelbach 2018-10-08 2018-10 P0571R1 SG1, Library Evolution, Library
P0586R1 Safe integral comparisons Federico Kircheis 2018-08-17 2018-10 P0586R0 Library Evolution
P0602R4 variant and optional should propagate copy/move triviality Zhihao Yuan 2018-08-23 2018-10 P0602R3 Library
P0608R3 A sane variant converting constructor Zhihao Yuan 2018-10-03 2018-10 P0608R2 Library
P0627R3 Function to mark unreachable code Melissa Mears 2018-10-08 2018-10 P0627R2 Library Evolution
P0631R4 Math Constants Lev Minkovsky, John McFarlane 2018-08-12 2018-10 P0631R3 SG6, Library Evolution
P0645R3 Text Formatting Victor Zverovich 2018-10-07 2018-10 P0645R2 Library Evolution, Library
P0652R1 Concurrent associative data structure with unsynchronized view Sergey Murylev, Anton Malakhov, Antony Polukhin 2018-10-01 2018-10 P0652R0 SG1
P0655R1 visit<R>: Explicit Return Type for visit Michael Park, Agustín Bergé 2018-07-09 2018-10 P0655R0 Library Evolution
P0657R2 Deprecate Certain Declarations in the Global Namespace Walter E. Brown 2018-10-07 2018-10 P0657R1 Library Evolution, Library
P0660R4 A Cooperatively Interruptible Joining Thread Nicolai Josuttis, Herb Sutter, Anthony Williams 2018-09-11 2018-10 P0660R3 SG1, Library Evolution, Library
P0660R5 A Cooperatively Interruptible Joining Thread Nicolai Josuttis, Herb Sutter, Anthony Williams 2018-10-06 2018-10 P0660R4 SG1, Library Evolution, Library
P0664r6 C++ Coroutine TS Issues Gor Nishanov 2018-10-04 2018-10 P0664R5 Core
P0709R2 Zero-overhead deterministic exceptions: Throwing values Herb Sutter 2018-10-06 2018-10 P0709R1 Evolution, Library Evolution
P0771R1 std::function move constructor should be noexcept Nevin Liber, Pablo Halpern 2018-10-07 2018-10 P0771R0 Library
P0782R2 Constraining Concepts Overload Sets ADAM David Alan Martin, Erich Keane, Sean R. Spillane 2018-10-08 2018-10 P0782R1 Evolution
P0790R1 Effect of operator<=> on the C++ Standard Library David Stone 2018-08-06 2018-10 P0790R0 Library Evolution, Library
P0792R3 function_ref: a non-owning reference to a Callable Vittorio Romeo 2018-10-07 2018-10 P0792R2 Library
P0796R3 Supporting Heterogeneous & Distributed Computing Through Affinity Gordon Brown, Ruyman Reyes, Michael Wong, H. Carter Edwards, Thomas Rodgers, Mark Hoemmen 2018-10-08 2018-10 P0796R2 SG1, SG14, Library Evolution, Library
P0798R2 Monadic operations for std::optional Simon Brand 2018-10-08 2018-10 P0798R1 SG14, Library Evolution
P0829R3 Freestanding Proposal Ben Craig 2018-10-06 2018-10 P0829R2 SG14, Library Evolution
P0847R1 Deducing this Gašper Ažman, Simon Brand, Ben Deane, Barry Revzin 2018-10-07 2018-10 P0847R0 Evolution
P0863R1 Fixing the partial_order comparison algorithm Jeff Snyder 2018-10-08 2018-10 P0863R0 Library Evolution
P0881R2 A Proposal to add stack trace library Alexey Gorgurov, Antony Polukhin 2018-09-18 2018-10 P0881R1 Core, Library Evolution, Library
P0891R1 Everyone Deserves a Little Order Gašper Ažman 2018-10-27 2018-10 P0891R0 Library Evolution, Library
P0896R3 The One Ranges Proposal Eric Niebler, Casey Carter, Christopher Di Bella 2018-10-07 2018-10 P0896R2 Library Evolution, Library
P0901R1 Size feedback in operator new Andrew Hunter, Chris Kennelly 2018-08-01 2018-10 P0901R0 Evolution
P0907R4 Signed Integers are Two’s Complement JF Bastien 2018-10-06 2018-10 P0907R3 Core
P0912R3 Merge Coroutines TS into C++20 working draft Gor Nishanov 2018-10-02 2018-10 P0912R2 WG21
P0918R2 More simd<> Operations Tim Shen 2018-10-03 2018-10 P0918R1 SG1, Library Evolution
P0920R0 Precalculated hash values in lookup Mateusz Pusz 2018-10-05 2018-10 Library Evolution, Library
P0927R2 Towards A (Lazy) Forwarding Mechanism for C++ James Dennett, Geoff Romer 2018-10-05 2018-10 P0927R1 Evolution
P0932R0 Tightening the constraints on std::function Aaryaman Sagar 2018-02-07 2018-10 Library
P0933R0 Runtime type introspection with std::exception_ptr Aaryaman Sagar 2018-02-07 2018-10 Library Evolution
P0939R1 Directions for ISO C++ H. Hinnant, R. Orr, B. Stroustrup, D. Vandevoorde, M. Wong 2018-10-08 2018-10 P0939R0 WG21
P0953R1 constexpr reflexpr Matúš Chochlík, Axel Naumann, David Sankel, Andrew Sutton 2018-10-07 2018-10 P0953R0 SG7
P0959R1 A Proposal for a Universally Unique Identifier Library Marius Bancila 2018-09-05 2018-10 P0959R0 Library
P0980R0 Making std::string constexpr Louis Dionne 2018-10-07 2018-10 Library Evolution
P0985R2 LWG Chair post-meeting report Marshall Clow 2018-10-07 2018-10 P0985R1 WG21
P0997R0 Retire Pernicious Language Constructs in Module Contexts Nathan Myers, ADAM David Alan Martin, Eric Keane 2018-10-09 2018-10 Evolution
P1004R1 Making std::vector constexpr Louis Dionne 2018-10-07 2018-10 P1004R0 Library
P1005R1 namespace std { namespace fs = filesystem; } Bryce Adelstein Lelbach, Davis Herring 2018-10-07 2018-10 P1005R0 SG3, Library Evolution, Library
P1006R1 Constexpr in std::pointer_traits Louis Dionne 2018-10-07 2018-10 P1006R0 Library
P1007R2 std::assume_aligned Timur Doumler, Chandler Carruth 2018-10-08 2018-10 P1007R1 Library
P1009R0 Array size deduction in new-expressions Timur Doumler 2018-10-08 2018-10 Evolution, Core
P1010R1 Container support for implicit lifetime types Mark Zeren, Chris Kennelly 2018-10-08 2018-10 P1010R0 Library Evolution, Library
P1019R1 Integrating Executors with Parallel Algorithms Jared Hoberock 2018-10-08 2018-10 P1019R0 SG1
P1021R1 Filling holes in Class Template Argument Deduction Mike Spertus, Timur Doumler, Richard Smith 2018-10-07 2018-10 P1021R0 Evolution
P1026R1 A call for an `Elsewhere Memory' study group Niall Douglas 2018-10-07 2018-10 P1026R0 SG12, SG14, Evolution, Library Evolution
P1028R1 status_code and standard error object for P0709 Zero-overhead deterministic exceptions Niall Douglas 2018-08-30 2018-10 P1028R0 SG14, Library Evolution
P1029R1 [[move_relocates]] Niall Douglas 2018-08-07 2018-10 P1029R0 Evolution
P1031R1 Low level file i/o library Niall Douglas 2018-09-11 2018-10 P1031R0 SG14, Library Evolution
P1032R1 Misc constexpr bits Antony Polukhin 2018-10-01 2018-10 P1032R0 Library
P1035R1 Input range adaptors Christopher Di Bella 2018-10-08 2018-10 P1035R0 Library Evolution
P1040R2 std::embed JeanHeyd Meneide 2018-10-02 2018-10 P1040R1 Evolution, Library Evolution
P1056R1 Add lazy coroutine (coroutine task) type Lewis Baker, Gor Nishanov 2018-10-07 2018-10 P1056R0 Library
P1063R1 Core Coroutines Geoff Romer, James Dennett, Chandler Carruth 2018-10-05 2018-10 P1063R0 Evolution
P1065R0 constexpr INVOKE Barry Revzin 2018-10-07 2018-10 Library Evolution, Library
P1066R1 How to catch an exception_ptr without even try-ing Mathias Stearn 2018-10-06 2018-10 P1066R0 Library Evolution
P1069R0 Refining standard library support for Class Template Argument Deduction Mike Spertus, Walter E. Brown, Stephan T. Lavavej 2018-10-08 2018-10 Library Evolution, Library
P1072R1 Optimized Initialization for basic_string and vector Chris Kennelly, Mark Zeren 2018-10-07 2018-10 P1072R0 SG16, Library Evolution, Library
P1073R2 Immediate functions Richard Smith, Andrew Sutton, Daveed Vandevoorde 2018-10-04 2018-10 P1073R1 Core
P1083R1 Move resource_adaptor from Library TS to the C++ WP Pablo Halpern 2018-10-07 2018-10 P1083R0 Library Evolution
P1084R1 Today's return-type-requirements Are Insufficient Walter E. Brown, Casey Carter 2018-10-07 2018-10 P1084R0 Core, Library
P1085R2 Should Span be Regular? Tony Van Eerd 2018-09-21 2018-10 P1085R1 Library Evolution, Library
P1089R2 Sizes Should Only span Unsigned Robert Douglas, Nevin Liber, Marshall Clow 2018-06-08 2018-10 P1089R1 Library Evolution
P1091R1 Extending structured bindings to be more like variable declarations Nicolas Lesser 2018-10-08 2018-10 P1091R0 Evolution
P1094R1 Nested Inline Namespaces Alisdair Meredith 2018-09-27 2018-10 P1094R0 Evolution
P1095R0 Zero overhead deterministic failure - A unied mechanism for C and C++ Niall Douglas 2018-08-29 2018-10 SG14, Evolution
P1096R0 Simplify the customization point for structured bindings Timur Doumler 2018-10-08 2018-10 Evolution
P1099R2 Using Enum Gašper Ažman, Jonathan Müller 2018-09-01 2018-10 P1099R1 SG1, Evolution
P1103R1 Merging Modules Richard Smith 2018-10-08 2018-10 P1103R0 WG21
P1105R1 Leaving no room for a lower-level language: A C++ Subset Ben Craig, Ben Saks 2018-10-06 2018-10 P1105R0 SG1, SG10, SG14, Evolution, Library Evolution
P1108R1 web_view Hal Finkel 2018-10-08 2018-10 P1108R0 Library Evolution
P1109R1 WG21 2018-06 Rapperswil Record of Discussion Nina Dinka Ranns 2018-10-07 2018-10 P1109R0 WG21
P1112R0 Language support for class layout control Pal Balog 2018-09-28 2018-10 Evolution
P1121R0 Hazard Pointers: Proposed Interface and Wording for Concurrency TS 2 Maged M. Michael, Michael Wong, Paul McKenney, Geoffrey Romer, Andrew Hunter, Arthur O'Dwyer, David S. Hollman, JF Bastien, Hans Boehm, David Goldblatt, Frank Birbacher, Mathias Stearn 2018-10-05 2018-10 Library Evolution, Library
P1122R1 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 2018-07-04 2018-10 P1122R0 Core, Library
P1131R1 Core Issue 2292: simple-template-id is ambiguous between class-name and type-name Jens Maurer 2018-10-02 2018-10 P1131R0 Core
P1132R1 out_ptr - a scalable output pointer abstraction JeanHeyd Meneide, Todor Buyukliev, Isabella Muerte 2018-08-11 2018-10 P1132R0 Library Evolution, Library
P1135R1 The C++20 Synchronization Library Bryce Adelstein Lelbach, Olivier Giroux, JF Bastien 2018-10-08 2018-10 P1135R0 SG1, Library Evolution, Library
P1138R0 Deprecating ATOMIC_VAR_INIT Aaron Ballman 2018-06-22 2018-10 SG1, Evolution
P1141R1 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 2018-10-08 2018-10 P1141R0 Evolution
P1143R0 Adding the `[[constinit]]` attribute Eric Fiselier 2018-07-04 2018-10 Evolution
P1144R0 Object relocation in terms of move plus destroy Arthur O'Dwyer, Mingxin Wang 2018-10-04 2018-10 Evolution, Library Evolution
P1145R0 Buffer Sequence Adaptors Vinnie Falco 2018-07-09 2018-10 Library Evolution
P1147R0 Printing `volatile` Pointers Bryce Adelstein Lelbach 2018-10-07 2018-10 Library Evolution
P1148R0 Cleaning up Clause 20 Tim Song 2018-10-07 2018-10 Library
P1149R0 Constexpr regex Antony Polukhin 2018-10-01 2018-10 Library Evolution
P1152R0 Deprecating volatile JF Bastien 2018-10-01 2018-10 SG1, Evolution, Library Evolution
P1153R0 Copying volatile subobjects is not trivial Arthur O'Dwyer, JF Bastien 2018-10-04 2018-10 Evolution
P1154R0 Type traits for structural comparison Arthur O'Dwyer, Jeff Snyder 2018-10-04 2018-10 Library Evolution
P1155R0 More implicit moves Arthur O'Dwyer, David Stone 2018-10-04 2018-10 Evolution
P1156R0 Merged Modules and Tooling Boris Kolpackov 2018-10-04 2018-10 Evolution
P1157R0 Multi-argument constrained-parameter Zhihao Yuan 2018-07-14 2018-10 Evolution
P1158R0 Concept-defined placeholder types Zhihao Yuan 2018-07-11 2018-10 Evolution
P1159R0 Type Erased Iterators for modern C++ Thomas Russell 2018-07-02 2018-10 Library Evolution
P1160R0 Add Test Polymorphic Memory Resource to the Standard Library Attila Fehér, Alisdair Meredith 2018-10-07 2018-10 Library Evolution

CppCast Episode 170: WebAssembly and nxxm with Damien Buhl

Episode 170 of CppCast the only podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Damien Buhl to discuss the current state of WebAssembly, nxxm and the belle::vue library.

CppCast Episode 170: WebAssembly and nxxm with Damien Buhl

by Rob Irving and Jason Turner

About the interviewee:

Damien was a Qt on Android Contributor which he presented at Droidcon 2011 in Berlin. He maintains ADAPT_STRUCT and Boost.Fusion. For a long time Damien worked for a 100 year old IoT company and now works on nxxm. He has a passion for C++ and JavaScript.

How to Use Class Template Argument Deduction--Stephan T. Lavavej


How to Use Class Template Argument Deduction

by Stephan T. Lavavej

From the article:

Class Template Argument Deduction (CTAD) is a C++17 Core Language feature that reduces code verbosity. C++17’s Standard Library also supports CTAD, so after upgrading your toolset, you can take advantage of this new feature when using STL types like std::pair and std::vector. Class templates in other libraries and your own code will partially benefit from CTAD automatically, but sometimes they’ll need a bit of new code (deduction guides) to fully benefit. Fortunately, both using CTAD and providing deduction guides is pretty easy, despite template metaprogramming’s fearsome reputation!

Word Counting in C++: Implementing a Simple Word Counter--Jonathan Boccara

Useful to learn.

Word Counting in C++: Implementing a Simple Word Counter

by Jonathan Boccara

From the article:

Word counts can reveal information about your code, or make an unknown piece of code more expressive to your eyes.

There are online tools to count words in generic text, but most of those I’ve come across are designed around counting words in text and SEO (Search Engine Optimization). Since analysing source code is not the same thing as analysing the text of a blog post, let’s design a tool fit for our needs of counting words in code. This way, we will be able to make it evolve when we discover new tasks to try with our word counter.

Another reason to write our own word counter is that it will let us practice interface design, and also STL algorithms, which are useful to master for coding in C++.

For this first version of our word counter, the objective will be to put together a working prototype. Then we will improve it over future posts, by adding features and by refining its implementation...

Quick Q: constexpr specifier performance did't meet my expectations in C++

Quick A: a constexpr function does not imply it will be evaluated at compile time.

Recently on SO:

constexpr specifier performance did't meet my expectations in C++

Your constexpr function requires way too much computation to do in a compiler, that's why the compiler chooses to delay it to runtime execution.

You can change this line:

static const auto c_x = c_fun(40);


constexpr auto c_x = c_fun(40);

to see compiler's output. On clang, it tells me:

note: constexpr evaluation hit maximum step limit;
c_x is indeed a compile-time constant, but the compiler can't compute it due to implementation limitation. Note that your function has exponential complexity.

Everything will be fine if you change 40 to some reasonable number, like 10:

constexpr auto c_x = c_fun(10);

C++ Links #6—Bartlomiej Filipek and Wojciech Razik

The next episode of the 'most useful C++ links' is now available:

C++ Links #6

by Bartlomiej Filipek and Wojciech Razik

From the article:

Welcome to new C++ Links - most important and useful articles, podcasts and videos that happen between 6th and 12th of October.

Today you will find a link to Core Guidelines rules about Concepts, a long article about C++17 class template deduction and a video that shows how inline keyword is taken into account by the compiler. At the end, you will also find a bonus!