Reminder: CppCon 2022 Early Bird ends Friday

In just 60 days, CppCon 2022 will start with Bjarne Stroustrup's opening keynote!

If you're interested in savings, the Early Bird discount for on-line and on-site tickets is available until this Friday, July 15. After that tickets will still be available right up to the conference, but at the full ticket price.

To register for CppCon 2022, click this link.

For details of on-line and on-site tickets, see the Registration page which includes information about student registration discounts, group rates, the CppCon Academy, the Diversity Dinner, the "Meet the Presenters" banquet, and much more!

Implementing C++ Modules: Lessons Learned... - Cameron DaCamara & Gabriel Dos Reis - 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!

Implementing C++ Modules: Lessons Learned, Lessons Abandoned

by Cameron DaCamara & Gabriel Dos Reis

Summary of the video:

C++ Modules were designed to bring more safety to your programs, while dramatically reducing compile time, resulting in overall increased productivity. How can your C++ toolchain meet this challenge? What can you do to take advantage of these new functionalities available in your toolbox? In this talk, we share lessons learned from implementing Modules based on the singular idea of providing robust support through the entire toolchain (from the lexer through the linker, the IDE, the build system, etc.), debunking the misconception that C++ Modules are just some syntactic sugar that is compiled away by the front-end. The challenges that any C++ compiler implementer faces include: (1) how to satisfy the requirements of merging materialization of declarations -- needed for sound handling of the global module fragments, in particular, as found in header files and header units – with associated performance cost; (2) how to take advantage of the One Definition Rule guarantees provided by named modules. They must address those challenges without compromising efficiency and static semantics. These lessons are valuable not just to C++ tools developers, but to ordinary C++ programmers as well, shedding light on how speed and safety gains are achieved by staying close to the spirit of the original C++ Modules design (“take the ODR as foundational”), and how you can put them to good use in the architecture of your programs and libraries.

Overload journal 169 - June 2022

The new Overload is out.

Overload journal 169 - June 2022

In the journal:

What Happened to Demo 13?
By Frances Buontempo
Making mistakes and forgetting are facts of life. Frances Buontempo tries to find ways to tackle this.

Performance Considered Essential
By Lucian Radu Teodorescu
We know that performance is important. Lucian Radu Teodorescu argues that it is actually the most important thing.

Compile-time Wordle in c++20
By Vittorio Romeo
Wordle is everywhere. Vittorio Romeo introduces wordlexpr, using compiler error messages to play the game.

ACCU 2022 Trip Reports
By Phil Nash and Dom Davis and Hannah Dee and Timur Doumler
The ACCU conference returned in hybrid mode this year. Several writers share their experiences.

Afterwood
By Chris Oldwood
Threads can mean many things. Chris Oldwood pulls a few to see what happens.

Design Patterns VS Design Principles: Factory method--Jonathan Boccara

Design decisions.

Design Patterns VS Design Principles: Factory method

by Jonathan Boccara

From the article:

Let’s examine another design pattern in our “Design Patterns VS Design Principles” series, where we relate design patterns to design principles. Today, we focus on the Factory method design pattern.

We’ll see the various forms the Factory method design pattern can take, the differences with the Abstract Factory method, and to which design principle the Factory method pattern relates to...

Faster, Easier, Simpler Vectors - David Stone - 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!

Faster, Easier, Simpler Vectors

by David Stone

Summary of the video:

The standard library has the type `std::vector`. It is used ubiquitously as a high-performance container. However, it was standardized in the mid 90s and C++ has seen many changes since then. It has been extended with allocators, move semantics, initializer_list, and much more. Can we do better?

We can. It is possible to write a container and a set of algorithms that are more efficient at run time, have simpler implementations, and have easier, more intuitive APIs. Not only that, but we can also make it easy for users to write their own vector-like containers that make slightly different trade-offs for when you need even more performance, and this presentation includes discussion of several such vectors.

We will go through specific examples of these vector-like types and the algorithms that operate on them, and then take from that general principles of software design. We'll look into how we're limited in what we can do by C++ as it exists today and what up-and-coming proposals can make things even better.

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.