News

CppCon 2020 Building an Intuition for Composition--Sy Brand

Registration is now open for CppCon 2021, which starts on October 24 and will 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 our most recent in-person conference in 2019 and our online conference in 2020. Here’s another CppCon talk video we hope you will enjoy – and why not register today for CppCon 2021 to attend in person, online, or both!

Building an Intuition for Composition

by Sy Brand

Summary of the talk:

If you're fed up of reading articles about "monads" and "endofunctors" that don't give you an understanding of how they can actually help your C++ programming, this talk is for you.

Function and data composition are becoming increasingly important in C++ due to features like ranges, continuable futures, and new error handling techniques. Using real-world examples and C++ programming idioms, I'll help you build an intuition for the mathematical concepts which underpin these so that you can make the most of them in your code and build your own abstractions built on the same foundations.

2021-08 Mailing Available

The 2021-08 mailing of new standards papers is now available.

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
N4895 Concurrency TS2 Michael Wong 2021-08-22 2021-08   All of WG21
P1018R12 C++ Language Evolution status  pandemic edition  2021/06–2021/08 JF Bastien 2021-08-02 2021-08 P1018R11 EWG Evolution,All of WG21
P1072R9 basic_string::resize_and_overwrite Chris Kennelly 2021-08-14 2021-08 P1072R8 LWG Library
P1169R2 static operator() Barry Revzin 2021-08-14 2021-08 P1169R1 EWG Evolution
P1206R5 Conversions from ranges to containers Corentin Jabot 2021-08-01 2021-08 P1206R4 LEWG Library Evolution
P1206R6 Conversions from ranges to containers Corentin Jabot 2021-08-03 2021-08 P1206R5 LEWG Library Evolution
P1664R5 reconstructible_range - a concept for putting ranges back together JeanHeyd Meneide 2021-08-16 2021-08 P1664R4 SG9 Ranges,LEWG Library Evolution
P1673R4 A free function linear algebra interface based on the BLAS Mark Hoemmen 2021-08-14 2021-08 P1673R3 LEWG Library Evolution
P1885R6 Naming Text Encodings to Demystify Them Corentin Jabot 2021-08-14 2021-08 P1885R5 LEWG Library Evolution
P2047R2 An allocator-aware optional type Nina Ranns 2021-08-13 2021-08 P2047R1 LEWG Library Evolution
P2093R8 Formatted output Victor Zverovich 2021-08-15 2021-08 P2093R7 SG16 Unicode,LEWG Library Evolution
P2280R3 Using unknown references in constant expressions Barry Revzin 2021-08-18 2021-08 P2280R2 EWG Evolution
P2286R2 Formatting Ranges Barry Revzin 2021-08-15 2021-08 P2286R1 LEWG Library Evolution
P2291R2 Add Constexpr Modifiers to Functions to_chars and from_chars for Integral Types in Header Daniil Goncharov 2021-08-17 2021-08 P2291R1 LEWG Library Evolution,LWG Library
P2361R2 Unevaluated strings Corentin Jabot 2021-08-13 2021-08 P2361R1 SG16 Unicode,SG22 Compatability,EWG Evolution
P2362R2 Remove non-encodable wide character literals and multicharacter wide character literals Peter Brett 2021-07-29 2021-08 P2362R1 EWG Evolution
P2370R1 Stacktrace from exception Andrei Nekrashevich 2021-08-15 2021-08 P2370R0 LEWG Library Evolution,LWG Library
P2372R2 Fixing locale handling in chrono formatters Victor Zverovich 2021-08-14 2021-08 P2372R1 LWG Library
P2387R1 Pipe support for user-defined range adaptors Barry Revzin 2021-08-14 2021-08 P2387R0 LEWG Library Evolution
P2388R1 Minimum Contract Support: either Ignore or Check_and_abort Andrzej Krzemieński 2021-08-15 2021-08   SG21 Contracts
P2393R1 Cleaning up integer-class types Tim Song 2021-08-06 2021-08 P2393R0 LWG Library
P2414R1 Pointer lifetime-end zap proposed solutions Paul E. McKenney 2021-08-13 2021-08 P2414R0 EWG Evolution
P2415R1 What is a view? Barry Revzin 2021-08-15 2021-08 P2415R0 LEWG Library Evolution
P2418R0 Add support for std::generator-like types to std::format Victor Zverovich 2021-08-08 2021-08   LEWG Library Evolution
P2419R0 Clarify handling of encodings in localized formatting of chrono types Victor Zverovich 2021-08-12 2021-08   SG16 Unicode,LEWG Library Evolution
P2420R0 2021 Summer Library Evolution Polls Bryce Adelstein Lelbach 2021-08-03 2021-08   LEWG Library Evolution
P2423R0 C Floating Point Study Group Liaison Report Rajan Bhakta 2021-08-04 2021-08   SG6 Numerics,SG22 Compatability
P2425R0 Expression Function Body Mihail Naydenov 2021-08-22 2021-08   EWGI SG17: EWG Incubator
P2428R0 Slides: BSI issues with P2300 Gašper Ažman 2021-08-16 2021-08   LEWG Library Evolution

CppCon 2019 Back to Basics: Virtual Dispatch and its Alternatives--Inbal Levi

Registration is now open for CppCon 2021, which starts on October 24 and will 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 our most recent in-person conference in 2019 and our online conference in 2020. Here’s another CppCon talk video we hope you will enjoy – and why not register today for CppCon 2021 to attend in person, online, or both!

Back to Basics: Virtual Dispatch and its Alternatives

by Inbal Levi

Summary of the talk:

Code efficiency is one of the strongest features of modern C++, therefore broadly used in industries with a need for high performance, such as Real-Time or Embedded Systems.

In this talk, we will go through the search for high run-time efficiency using the dispatch mechanism.

We will start by providing tools for understanding and estimating run-time performance cost.

Next, we'll analyze a test case, and dive into some of the most fundamental components of the language such as inheritance, and templates.

We will continue by introducing implementations which produce high run-time efficiency code such as CRTP, std::variant and visitor, and use them to maximize performance.

Finally, we will do benchmarking and draw conclusions, and try to answer the question -
How can we use C++ ideally for achieving high-performance efficiency?

Upcoming C++ User Group meetings in September

A listing of the upcoming C++ User Group Meetings in September

C++ User Group Meetings in September 2021

by Jens Weller

From the article:

The monthly overview about upcoming C++ User Group Meetings in September. As the pandemic ends or continues, depending in which part of the world you live, I list again all meetings online and real world.

Meeting C++ online hosts two events in September:

    16.9 C++ UG Meeting C++ online - September - Windows, macOS and the Web: Lessons from cross-platform
    28.9 C++ UG Meeting C++ online - Online C++ job fair (afternoon CEST)
    29.9 C++ UG Meeting C++ online - Online C++ job fair (evening CEST)

Meeting C++ is still looking for employers to participate in the online job fair, register your spot with in the next days to be best visible for this event.

CppCon 2020 Calling Functions: A Tutorial--Klaus Iglberger

Registration is now open for CppCon 2021, which starts on October 24 and will 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 our most recent in-person conference in 2019 and our online conference in 2020. Here’s another CppCon talk video we hope you will enjoy – and why not register today for CppCon 2021 to attend in person, online, or both!

Calling Functions: A Tutorial

by Klaus Iglberger

Summary of the talk:

How is a function call resolved? How does the compiler find the right function and how does the compiler choose from a set of available functions? This talk will give an overview of the individual steps taken during the resolution of a function call. It will primarily focus on the different kinds of name lookup, argument deduction, and on overload resolution. Attendees will gain insight into the mechanics of (un-)qualified lookup, argument dependent lookup, two-phase lookup, name hiding, SFINAE, (viable) candiate functions, and ambiguous function calls. They will leave the talk with a much better understanding of the (sometimes surprising) details of function calls.

Asynchronous Stacks and Scopes--Eric Niebler

A revolution?

Asynchronous Stacks and Scopes

by Eric Niebler

From the article:

In Structured Concurrency, I talk about what structured concurrency is and why it’s a big deal for C++ especially. In this post I discuss some more interesting properties of asynchronous code that is structured: async stacks and async scopes...

The First Big Update of My C++20 Book--Rainer Grimm

Will you get it?

The First Big Update of My C++20 Book

by Rainer Grimm

From the article:

I'm happy to announce the first big update of my C++20 book. The update was mainly due to the improved C++ compiler support of C++20. The update includes concepts, the ranges library, modules, the three-way comparison operator, the format library, and the chrono library.

CppCon 2019 EDSL Infinity Wars: Mainstreaming Symbolic Computation--Joel Falcou, Vincent Reverdy

Registration is now open for CppCon 2021, which starts on October 24 and will 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 our most recent in-person conference in 2019 and our online conference in 2020. Here’s another CppCon talk video we hope you will enjoy – and why not register today for CppCon 2021 to attend in person, online, or both!

EDSL Infinity Wars: Mainstreaming Symbolic Computation

by Joel Falcou, Vincent Reverdy

Summary of the talk:

Scientists and Developers want the same thing: a simple code that does exactly what it should. For the former, it implies adhering to their knowledge base and domain idioms. For the latter, it means it compiles in a reasonable time frame and without bugs. for both, it better computes fast in the end. One way developers, especially in C++, provides scientists with usable libraries is to design them as Embedded Domain Specific Languages. Alas, in all honesty, if someone asked the Scientists, they will probably state that LaTex is *the* perfect DSLs they practice every day.

This is an old story and even if we only focus on matrix-based libraries, the current landscape of high-performance computing library -- Blaze, Blitz++, EIGEN, Armadillo, etc... -- is proof that those techniques have a decent public following. This is the point where the icky things start: stories of meta-programming, so-called expression templates and their uphill battle against new C++ features: interaction with auto, rvalue-references, move semantics and so on. The authors have spent quite a bit of their coding life trying to play with or around those techniques and this talk is about what they learned during this journey.

This talk will focus on what kind of mistakes, oversights and traps the old kind of scientific EDSLs fell into. We will investigate why the new C++ features didn't help them but pushed them further into a state of ever-growing complexity. We will present our vision of how a modern-C++ friendly EDSL for science can be built. By starting from scratch, this talk will cover the actual requirements of such a library including move-aware expression templates, symbolic formula building, type/value maps, named parameters and static visitors. As a conclusion, we will scheme over various immediate benefits of such an EDSL and new applications that old style libraries could not handle like symbolic simplification, automatic analytical derivation and more.

The Meeting C++ online job fair returns in September!

The next edition of the C++ online job fair organized by Meeting C++ will be on 21s/&22nd September!

The Meeting C++ online job fair returns!

by Jens Weller

From the article:

The first two online events in remo have been a great success. They've been very well received by the C++ community and this event will now be a part of regularly scheduled events for Meeting C++ online. As remo is not available anymore, the event will be hosted in the new online event platform for Meeting C++ 2021. The event will be again on two days: 21st/22nd September, with the first day being in the afternoon and the second day in the evening...