PVS-Studio 6.26 Released

This new release included many interesting improvements related to analysis of C and C++ code, about which we'd like to tell our users.

PVS-Studio 6.26 Released

by Andrey Karpov

From the article:

A developer believes that this is a bug in the compiler. Nevertheless, it is the author of the code who is wrong. The function does not work correctly due to the fact that undefined behavior occurs in it. The compiler follows that in the r variable a certain sum is calculated. Overflow of the r variable must not happen. Otherwise, it is undefined behavior, which doesn't have to be considered or taken into account by a compiler. So, the compiler thinks that since the value of r variable after ending the loop cannot be negative, then r & 0x7fffffff operation is not needed to reset the sigh bit and the compiler just returns the value of r variable from the function.

 

Milestone | New Home | Trip Reports--Jon Kalb

The conclusion of this year cppcon.

Milestone | New Home | Trip Reports

by Jon Kalb

From the article:

At the formal closing of CppCon 2018, we took a moment to consider how far we’ve come in the first five years of the conference. Those years have seen us grow in so many ways. Since our first conference, we’ve added classes, field trips, author signings, exhibitor tables and booths, Tool Time, and the SG14 co-located ISO meeting. The number of main program sessions has grown by about fifty percent to almost one hundred fifty.  The number of Open Content sessions has doubled to about two dozen. The number of conference days (including classes)  has doubled from four and a half to nine and the number of attendees has doubled from about six hundred to over twelve hundred.

Trip report - CppCon 2018--Jean Guegant

A new one!

Trip report - CppCon 2018

by Jean Guegant

From the article:

New year, new conference! This time, my employer, King, helped me to organize a first pilgrimage to CppCon for me and another colleague. You cannot fathom how enthusiastic I was to finally making it there! Although I might be a bit late on the "trip-report-race", I think that it is still worth to relate my overall experience of the event and then move onto a list of recommended talks you should watch-out on Youtube...

Bjarne Stroustrup Interview at CppCon 2018--Steve Carroll, Augustin Popa

Cppcon videos are coming.

Bjarne Stroustrup Interview at CppCon 2018

by Steve Carroll, Augustin Popa

From the video:

We are back with footage from CppCon 2018, which occurred in Bellevue, Washington! In this special GoingNative episode, our host Steve Carroll chats with Gabriel Dos Reis and Bjarne Stroustrup, the creator of C++, who spoke this year about Concepts, an exciting new feature coming soon to C++!

Overload 147 is now available

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

Overload 147 is now available

From the journal:

Are we nearly there yet?
Deciding if you are making progress can be a challenge. Frances Buontempo considers various metrics and their effects. by Frances Buontempo

How to Write a Programming Language: Part 3, The Evaluator
We’ve parsed our tokens: now we need turn them into values. Andy Balaam continues writing a programming language with the evaluator. by Andy Balaam

P1063 vs Coroutines TS: Consensus on High-Level Semantics
Dmytro Ivanchykhin, Sergey Ignatchenko and Maxim Blashchuk argue that we need coroutines TS now to improve-based-on-experience later. by Dmytro Ivanchykhin, Sergey Ignatchenko and Maxim Blashchuk

Implementing the Spaceship Operator for Optional
Comparison operators can get complicated. Barry Revzin explores how the new operator <=> helps. by Barry Revzin

Compile-time Data Structures in C++17: Part 2, Map of Types
Compile time type selection allows static polymorphsim. Bronek Kozicki details an implementation of a compile time map. by Bronek Kozicki

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