2022

Advancing the State of the Art for std::unordered_map Implementations -- boost.org

Several Boost authors have embarked on a project to improve the performance of boost's associative containers.

Boost.Unordered

by boost.org

About the improvements:

Boost.Unordered's new implementation of std::unordered_map (and multimap, set and multiset variants), and to extend its portfolio of available containers to offer faster, non-standard alternatives based on open addressing.

The first goal of the project has been completed in time for Boost 1.80 (due August 2022). We describe here the technical innovations introduced in boost::unordered_map that makes it the fastest implementation of std::unordered_map on the market.

 

Visual Assist | Visual Studio Plug-in -- WholeTomato

Visual Assist fills gaps in Visual Studio for C/C++ and C# Developers

Visual Assist Software

by WholeTomato

About the software:

The best coding software plug-in for Microsoft Visual Studio is Visual Assist from Whole Tomato Software. The plug-key-in's features are syntax highlighting and intelligence. Additionally, it allows spell-checking in comments, enhances code suggestions, and adds refactoring commands.

It is a top-notch code inspection tool Now with a slew of other features that make Visual Studio a breeze to use.

These features are given below

1. Code Inspection Modernization
2. Fast Navigation
3. Refactoring
4. Code Correction
5. Unreal_Engine 4 Support
6. Code Assistance

Download Visual Assist Now!

C++20: The Small Pearls - Rainer Grimm - CppCon 2021

Registration is now open for CppCon 2022, which starts on September 11 and will again be held both in person and online. To whet your appetite for this year’s conference, we’re posting videos of some of the top-rated talks from last year’s conference. Here’s another CppCon talk video we hope you will enjoy – and why not register today for CppCon 2022 to attend in person, online, or both!

C++20: The Small Pearls

by Rainer Grimm

Summary of the video:

C++20 has way more to offer than the big four concepts, ranges, modules, and coroutines.
Here are a few of the shining pearls.

The spaceship operation automatically creates the six comparison operators. Thanks to consteval, constinit, and improved templates, programming at compile time becomes more powerful. std::span supports safe access to contiguous memory blocks. An enhanced time library and a new type date. Comfortable formatting of data thanks to std::format. Easily synchronize or coordinate threats with semaphores or latches and barriers. An improved thread that maintains itself and supports interruption. Thanks to the synchronized output streams, write operations in the concurrent environment do not end in a mess.

CLion 2022.2 EAP3: CMakeCache Editor, Symbol Servers for Debug, Evaluation of...--Anastasia Kazakova

Are you using it?

CLion 2022.2 EAP3: CMakeCache Editor, Symbol Servers for Debug, Evaluation of Constant Values in the Editor

by Anastasia Kazakova

From the article:

A new CLion 2022.2 EAP3, 222.2889.11, is available from our website, via the Toolbox App, or as a snap package (if you are using Ubuntu). If you are on macOS, there is a separate build for Apple Silicon (M1 chip). Those who are already using EAP2 can apply a patch to update to EAP3...

Embracing Modern C++ Safely, Book Review--Bartlomiej Filipek

Did you read it?

Embracing Modern C++ Safely, Book Review

by Bartlomiej Filipek

From the article:

C++11 has been around for around 11 years and C++14 for 8. From my experience, I see that even today, many companies struggle to use those standards in production in the most efficient way. As always, with new stuff came benefits, risks, and increased learning effort. Fortunately, with a new book written by top C++ Experts, we have a solid guide on what is safe and what might be problematic in Modern C++.

The book is called “Embracing Modern C++ Safely”.

Let’s see what’s inside...

CppCon 2022 Call for Poster Submissions - Bob Steagall

Preparations for CppCon 2022 continue...

CppCon 2022 Call for Poster Submissions

by Bob Steagall

From the announcement:

Are you doing something cool with C++? Got a great new library, technique, or tool?

We want you to share it with the C++ community by creating a poster and presenting it at CppCon 2022!

The poster submissions deadline is Friday, July 22nd, with decisions sent by August 1st. For topic ideas, submission instructions, and advice on making the best possible submission, see the 2022 Poster Submissions page.

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)