June 2022

PVS-Studio challenge: can you spot an error in C++ code?

PVS-Studio team made an entertaining quiz for you. Try to quickly find a bug in a code fragment. If you spot an error - click on it.

Challenge: can you spot an error in C++ code?

by Andrey Karpov

From the article:

You'll see ten code fragments. If you manage to find an error in under 1 minute, you score one point. The 1-minute limit is made on purpose. Otherwise you'll definitely find all errors — code fragments are short. Anyway, treat this quiz as a game, and not as a real test of your programming skills smile

PVS-Studio 7.19: C++ analyzer now works better with QNX compilers and Unreal Engine 5

Recently, we have released a new PVS-Studio version — 7.19. In this note, we'll tell you about new features in the analyzer, the enhanced documentation, as well as what to read and... what to play.

PVS-Studio 7.19: what's new?

by Sergey Vasiliev

From the article:

Now, you can use PVS-Studio to analyze projects on Unreal Engine 5. For the most part, projects on UE 5 are analyzed in the same way as projects on UE 4. The difference is described in the documentation.

2022-06 Mailing Available

The 2022-06 mailing of new standards papers is now available.


WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
P0009R17 MDSPAN Christian Trott 2022-06-15 2022-06 P0009R16 LWG Library
P0429R9 A Standard flat_map Zach Laine 2022-06-17 2022-06 P0429R8 LWG Library
P0447R20 Introduction of std::hive to the standard library Matt Bentley 2022-06-14 2022-06 P0447R19 SG14 Low Latency,LEWG Library Evolution,All of WG21
P0792R10 function_ref: a non-owning reference to a Callable Vittorio Romeo 2022-06-14 2022-06 P0792R9 LEWG Library Evolution,LWG Library
P0957R8 Proxy: A Polymorphic Programming Library Mingxin Wang 2022-06-15 2022-06 P0957R7 LEWG Library Evolution
P1018R16 C++ Language Evolution status  pandemic edition  2022/02–2022/06 JF Bastien 2022-06-16 2022-06 P1018R15 EWG Evolution,All of WG21
P1144R6 Object relocation in terms of move plus destroy Arthur O'Dwyer 2022-06-09 2022-06 P1144R5 EWG Evolution,LEWG Library Evolution
P1222R4 A Standard flat_set Zach Laine 2022-06-13 2022-06 P1222R3 LWG Library
P1223R5 find_last Zach Laine 2022-06-17 2022-06 P1223R4 LWG Library
P1642R10 Freestanding Library: Easy [utilities], [ranges], and [iterators] Ben Craig 2022-06-18 2022-06 P1642R9 CWG Core,LWG Library
P1673R9 A free function linear algebra interface based on the BLAS Mark Hoemmen 2022-06-14 2022-06 P1673R8 SG6 Numerics,LEWG Library Evolution
P1689R5 Format for describing dependencies of source files Ben Boeckel 2022-06-06 2022-06 P1689R4 SG15 Tooling,SG16 Unicode
P1774R8 Portable assumptions Timur Doumler 2022-06-14 2022-06 P1774R7 CWG Core
P1839R5 Accessing object representations Timur Doumler 2022-06-16 2022-06 P1839R4 CWG Core
P1967R7 #embed - a simple, scannable preprocessor-based resource acquisition method JeanHeyd Meneide 2022-06-23 2022-06 P1967R6 EWG Evolution
P2167R2 Improved Proposed Wording for LWG 2114 (contextually convertible to bool) Daniel Krügler 2022-06-15 2022-06 P2167R1 LWG Library
P2278R4 cbegin should always return a constant iterator Barry Revzin 2022-06-17 2022-06 P2278R3 LEWG Library Evolution
P2490R3 Zero-overhead exception stacktraces Ed Catmur 2022-06-20 2022-06   LEWG Library Evolution
P2502R2 std::generator: Synchronous Coroutine Generator for Ranges Casey Carter 2022-06-03 2022-06 P2502R1 LWG Library
P2505R3 Monadic Functions for std::expected Jeff Garland 2022-06-15 2022-06 P2505R2 LEWG Library Evolution,LWG Library
P2505R4 Monadic Functions for std::expected Jeff Garland 2022-06-17 2022-06 P2505R3 LEWG Library Evolution,LWG Library
P2513R3 char8_t Compatibility and Portability Fix JeanHeyd Meneide 2022-06-17 2022-06 P2513R2 EWG Evolution
P2551R2 Clarify intent of P1841 numeric traits Matthias Kretz 2022-06-22 2022-06 P2551R1 LEWG Library Evolution
P2562R1 constexpr Stable Sorting Oliver Rosten 2022-06-14 2022-06 P2562R0 LEWG Library Evolution,LWG Library
P2570R0 On side effects in contract annotations Andrzej Krzemieński 2022-06-08 2022-06   SG21 Contracts
P2572R0 std::format() fill character allowances Tom Honermann 2022-06-11 2022-06   SG16 Unicode,LEWG Library Evolution
P2575R0 2022-05 Library Evolution Poll Outcomes Bryce Adelstein Lelbach 2022-06-22 2022-06   LEWG Library Evolution
P2582R1 Wording for class template argument deduction from inherited constructors Timur Doumler 2022-05-23 2022-06 P2582R0 CWG Core
P2590R1 Explicit lifetime management Timur Doumler 2022-06-15 2022-06 P2590R0 CWG Core,LWG Library
P2591R1 Concatenation of strings and string views Giuseppe D'Angelo 2022-06-02 2022-06 P2591R0 LEWG Library Evolution
P2594R0 Slides: Allow programmer to control and detect coroutine elision (P2477R2 Presentation)) Chuanqi Xu 2022-05-26 2022-06   EWG Evolution,LEWG Library Evolution
P2596R0 Improve std::hive::reshape Arthur O'Dwyer 2022-06-09 2022-06   SG14 Low Latency,LEWG Library Evolution
P2598R0 "Changing scope for lambda trailing-return-type" (P2036) should not be a DR Ville Voutilainen 2022-05-29 2022-06   EWG Evolution,CWG Core
P2599R0 mdspan::size_type should be index_type Nevin Liber 2022-06-07 2022-06   LEWG Library Evolution
P2599R1 mdspan::size_type should be index_type Nevin Liber 2022-06-13 2022-06 P2599R0 LEWG Library Evolution
P2599R2 index _type & size_type in mdspan Nevin Liber 2022-06-23 2022-06 P2599R1 LEWG Library Evolution,LWG Library
P2600R0 A minimal ADL restriction to avoid ill-formed template instantiation Matthias Kretz 2022-06-15 2022-06   EWGI SG17: EWG Incubator,EWG Evolution
P2601R0 To make redundant empty angle brackets optional for class template argument lists Justin Cooke 2022-06-23 2022-06   EWG Evolution,CWG Core
P2602R0 Poison Pills are Too Toxic Barry Revzin 2022-06-17 2022-06   LEWG Library Evolution
P2603R0 member function pointer to function pointer Jarrad Waterloo 2022-06-15 2022-06   EWG Evolution,LEWG Library Evolution
P2604R0 MDSPAN: rename pointer and contiguous Christian Trott 2022-06-15 2022-06   LEWG Library Evolution,LWG Library
P2605R0 SG16: Unicode meeting summaries 2022-01-12 through 2022-06-08 Tom Honermann 2022-06-15 2022-06   SG16 Unicode
P2607R0 Let alignas specify minimum alignment Justin Cooke 2022-06-23 2022-06   CWG Core
P2608R0 Allow multiple init-statements Justin Cooke 2022-06-23 2022-06   EWG Evolution
P2609R0 Relaxing Ranges Just A Smidge John Eivind Helset 2022-06-23 2022-06   SG9 Ranges
P2613R0 Add the missing `empty` to `mdspan` Yihe Le 2022-06-23 2022-06   LEWG Library Evolution

CppCon: Announcing CppCon Academy 2022 Classes

CppCon 2022 registration is open, and the Academy classes (aka pre- and post-conference extra tutorials) have just been announced:

Announcing CppCon Academy 2022 Classes

From the announcement:

Registration is open for almost twenty CppCon Academy classes that will be held in the days before or after CppCon 2022 in September. Four classes are open to online attendees and the rest will be offered to onsite attendees at the Gaylord Rockies in Aurora...

CppCon instructors are selected from the best C++ instructors in the world. They feature rare combinations of deep technical knowledge, extensive development experience, and the ability to explain things in an approachable manner.

Reminder: Early Bird Registration ends in mid-July, so register now!

Summary list of classes for 2022:

  • C++20 in Practice: A Complete Introduction with Nicolai Josuttis (onsite, pre)
  • C++ Templates for Developers with Walter E. Brown (onsite, post)
  • Getting Started with C++20/23 with Jeff Garland (onsite, post)
  • Introduction to C++20 with Mateusz Pusz (onsite, pre & post – four-days)
  • Modern C++: When Efficiency Matters with Andreas Fertig (online, pre)
  • Programming with C++20 with Andreas Fertig (online, post)
  • Accelerated TDD: For More Productive C++ with Phil Nash (onsite, pre)
  • Advanced Modern C++ Programming: The Tricky Parts with Nicolai Josuttis (online, post)
  • Best Practices for Modern C++ with Rainer Grimm (onsite, pre)
  • Digging Deeper With C++ Best Practices with Jason Turner (onsite, pre)
  • Managing Memory with Patrice Roy (onsite, post)
  • Thinking Small with Patrice Roy (onsite, pre)
  • Modern C++ Design Patterns with Klaus Iglberger (onsite, pre)
  • System Architecture And Design Using Modern C++ with Charley Bay (online, pre)
  • Heterogeneous Programming in Modern C++ with SYCL with Gordon Brown, James Reinders, Michael Wong, Rod Burns, and Ronan Keryell (onsite, post)
  • More Concurrent Thinking in C++: Beyond the Basics with Anthony Williams (onsite, pre)
  • Performance and Efficiency in C++ for Experts, Future Experts, and Everyone Else with Fedor Pikus (onsite, post)

CppCon 2022 Registration is Open

Tickets for September are now on sale! This year's conference will again be fully hybrid, on-site in Colorado and on-line around the world, coordinated together.

CppCon 2022 Registration is Open

Highlights from the announcement:

Registration is now open for CppCon 2022, including CppCon Academy Classes... new discount packages for organizations with many C++ developers... savings for Early Bird registrations before the end of July 15th... four online classes and over a dozen onsite classes... new Economy registration... three options available for full-time students... [and more]

Check out the full announcement for more details.

Reminder: CppCon 2022 talk submission deadline this week

Thank you to everyone who has already responded to the CppCon 2022 Call for Submissions! We love the strong set of high-quality submissions we've received so far again this year, and more are still coming in as we approach the talk submission deadline this Friday.

If you have been thinking of submitting a talk proposal, you still have a few days! Remember that this year the conference is again fully on-site and fully on-line, closely coordinated, just like last year. So we encourage talk submissions for all parts of the conference... just let us know whether you prefer to speak on-site, on-line, or either.

More CppCon news will be coming soon, including opening registration and announcing the pre- and post-conference classes. Stay tuned!

CppCon 2022 Call for Volunteers and Volunteer Grant Program -- Brett Searles

CppCon 2022 is just three months away! It's hybrid again this year, with a full on-site part together with a tightly coordinated full on-line experience, just like last year. Watch for registration to open in a few days.

In the meantime, here's the latest update -- a call for volunteers, including a grant program:

CppCon 2022 Call for Volunteers and Volunteer Grant Program

by Brett Searles

From the announcement:

Be a part of making CppCon 2022 an exciting event.  Please join us as a volunteer. Building on the success of last year’s hybrid conference, we’ll need both onsite and online-only volunteers.

... For more information about volunteering and the Volunteer Grant Program, please see our Volunteer page.

Join a great team and be a part of history making in the C++ community, please complete the CppCon 2022 Volunteer Application Form.  There will be other steps after completion, we will contact you to assist you with setup for the conference.

Projections with Ranges

The series continue.

Projections with Ranges

by Rainer Grimm

From the article:

The algorithms of the ranges library are lazy, can work directly on the container, and can easily be composed. But they have more to offer: projections. A projection is a mapping of a set into a subset. Let me show you in this post what that means...

Early Access to C++Now 2022 Videos--Anastasia Kazakova

Come see them.

Early Access to C++Now 2022 Videos

by Anastasia Kazakova

From the article:

C++Now is one of the most academic events in the C++ calendar. Up in the mountains for a week in Aspen, Colorado, attendees dive into all kinds of profound C++ topics, from new language features and proposals to libraries and tools. C++ chats start at breakfast and continue until late at night in the bar. As the conference describes itself, the C++Now participants pushe C++ to its limits and let the community know what C++ will look like tomorrow and what we can do with C++ now!