CppCon 2019 Behind the Scenes of a C++ Build System--Jussi Pakkanen

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!

Behind the Scenes of a C++ Build System

by Jussi Pakkanen

Summary of the talk:

Everyone has an opinion on what build systems should do but there are surprisingly few who have an understanding of how they do it. In this talk we shall look behind the curtain and examine what does it actually take to create a modern build system and how they go about their business of turning source code into either compiler errors or executables.

On this journey we shall learn about the wonders of supporting 10+ different platforms and toolchains, dependency management, the awesomeness (both ironically and not) of shared libraries, compiler bugs and the interesting requirements on tools used at the lowest layers of a modern operating system. Using the increasingly popular Meson build system we shall examine real world design choices and tradeoffs and how they affect the final end user development experience. Performance optimization is also examined by looking at how you can efficiently scale program compilation both up to a compilation cluster and down to something like a Raspberry Pi.

Armed with all this knowledge we should finally be able to answer the question of why almost all build systems have suffered from poor usability and maybe, just maybe, find a proper solution for the build and dependency problem.

Slides of the 24th of June 2021 BeCPP Meeting -- Marc Gregoire

On June 24th, 2021, the Belgian C++ Users Group had their next online event. The slides and other material are now available online.

Slides of the 24th of June 2021 BeCPP Meeting

by Marc Gregoire

About the event:

  • “A new way of formatting in C++20, are we getting there in the end?” by Lieven de Cock
  • “Understanding value categories in C++” by Kris van Rens

If you couldn't attend the event in person, or if you would like to go over the material again, you can download them from the BeCPP website.

CppCon 2020 Effective Remote C++ Development with Codespaces--Nick Uhlenhuth

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!

Effective Remote C++ Development with Codespaces

by Nick Uhlenhuth

Summary of the talk:

The rise of remote work and the growth of team sizes present a challenge for C++ developers. Many C++ projects have complex hardware and software requirements, making onboarding of new team members and productive coding from home harder than they need to be. We need tools to ease configuration of your team's development environments and grant them access to the processing power they need from wherever they are in the world.

This presentation will show how Codespaces can use the power and flexibility of the cloud to address these issues. Codespaces give you the ability to quickly create a managed online development environment specific to your project that you can access from anywhere. We'll look at the problems which hit C++ developers particularly hard, like long build times and dependency management. Finally, we'll show the tool in action to give you a feel for how your teams could leverage it, and more broadly get you to think about what parts of your team's development process can be streamlined.

New Software Design Track at CppCon 2021

Will you attend?

New Software Design Track at CppCon 2021

From the article:

CppCon 2021 introduces a new Software Design Track.
Lisa LippincottEvery year CppCon presents dozens of sessions on how to produce high quality C++ code. But high quality software products require more of software engineers than just good coding. Great software products are built by engineers with great design skills, so CppCon also presents sessions focused on designing software components of high quality...

C++20 three-way comparison operator: Part 3--Gajendra Gulgulia

The series continue.

C++20 three-way comparison operator: Part 3

by Gajendra Gulgulia

From the article:

In the second part of the tutorial series, I touched upon the rules of the default operator<=> . Unlike default constructors or destructors, the default version of the <=> is not available automatically but has to be declared in the interface of the class and then only it is available to be used.
In this part of the tutorial series, I’ll explain the mechanics of the default operator<=> to further elucidate the rules of the three-way operator, i.e. what exactly is the compiler doing when it sees an expression a < b on a custom object for which no comparison operator is overloaded but only a default version of the operator<=> is declared...

CppCon 2021 opening keynote: Bjarne Stroustrup

bjarne-s-300x271.jpgWill you be there? Early Bird registration is open to attend in person to be in the room for this keynote, to attend online, or do both...

Opening Keynote: Bjarne Stroustrup, live in person

From the article:

CppCon 2021 will kick off on Monday, October 25 with Bjarne Stroustrup delivering the opening keynote live in person in Aurora, Colorado, USA. This is Stroustrup’s first in-person talk in North America since C++20 was completed, just before the pandemic lockdowns began. His talk connects C++’s roots with all the things that make C++20 a historic milestone – it’s not only the biggest release of C++ in a decade, but also the first edition of Standard C++ ever that is “D&E-complete,” containing all of the features (except only unified function call syntax) that Stroustrup described a quarter-century ago in The Design and Evolution of C++ as his goals for C++’s future development, including concepts, coroutines, and modules which in 2021 are for the first time now available as actual realities in production C++ compilers.

CppCon 2021 is proud to be the forum for Dr. Stroustrup’s landmark talk, which he describes as follows: ...

2021-06 Mailing Available

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

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
N4887 PL22.16/WG21 agenda: 7 June 2021, Virtual Meeting John Spicer 2021-05-21 2021-06   All of WG21
N4888 WG21 virtual meetings: 2021-06, and -10 Herb Sutter 2021-05-24 2021-06   All of WG21
N4889 WG21 admin telecon meeting: 2021-09 Herb Sutter 2021-05-24 2021-06   All of WG21
N4890 WG21 2021-05 Admin telecon minutes Nina Ranns 2021-06-25 2021-06   All of WG21
N4891 WG21 2021-06 Virtual Meeting Minutes of Meeting Nina Ranns 2021-06-24 2021-06   All of WG21
N4892 Working Draft, Standard for Programming Language C++ Thomas Köppe 2021-06-18 2021-06   All of WG21
N4893 Editors' Report - Programming Languages - C++ Thomas Köppe 2021-06-18 2021-06   All of WG21
P0205R1 Efficient Seeding of Random Number Engines Moritz Klammler 2021-06-24 2021-06 P0205R0 SG6 Numerics,LEWG Library Evolution,LWG Library
P0447R15 Introduction of std::hive to the standard library Matt Bentley 2021-06-16 2021-06 P0447R14 SG14 Low Latency,LEWG Library Evolution,All of WG21
P0533R7 constexpr for cmath and cstdlib Oliver Rosten 2021-06-24 2021-06 P0533R6 LEWG Library Evolution
P0533R8 constexpr for cmath and cstdlib Oliver Rosten 2021-06-24 2021-06 P0533R7 CWG Core,LWG Library
P1018R11 C++ Language Evolution status pandemic edition 2021/05 JF Bastien 2021-06-01 2021-06 P1018R10 EWG Evolution,All of WG21
P1072R8 basic_string::resize_and_overwrite Chris Kennelly 2021-06-03 2021-06 P1072R7 LWG Library
P1072R8 basic_string::resize_and_overwrite Chris Kennelly 2021-06-03 2021-06 P1072R7 LWG Library
P1132R8 out_ptr - a scalable output pointer abstraction JeanHeyd Meneide 2021-06-10 2021-06 P1132R7 LWG Library
P1202R3 Asymmetric Fences David Goldblatt 2021-06-14 2021-06 P1202R2 LWG Library
P1642R6 Freestanding Library: Easy [utilities], [ranges], and [iterators] Ben Craig 2021-05-30 2021-06 P1642R5 LWG Library
P1664R4 reconstructible_range - a concept for putting ranges back together JeanHeyd Meneide 2021-06-15 2021-06 P1664R3 SG9 Ranges,LEWG Library Evolution
P1675R2 rethrow_exception must be allowed to copy Billy O'Neal 2021-05-25 2021-06 P1675R1 CWG Core,LWG Library
P1689R4 Format for describing dependencies of source files Ben Boeckel 2021-06-14 2021-06 P1689R3 SG15 Tooling,SG16 Unicode
P1708R5 Simple Statistical Functions Richard Dosselman 2021-06-14 2021-06 P1708R4 SG6 Numerics,SG19 Machine Learning,LEWG Library Evolution
P1967R4 #embed - a simple, scannable preprocessor-based resource acquisition method JeanHeyd Meneide 2021-06-19 2021-06 P1967R3 EWG Evolution
P2164R5 views::enumerate Corentin Jabot 2021-06-15 2021-06 P2164R4 SG9 Ranges
P2165R2 Compatibility between tuple, pair and tuple-like objects Corentin Jabot 2021-06-15 2021-06 P2165R1 LEWG Library Evolution
P2290R1 Delimited escape sequences Corentin Jabot 2021-06-07 2021-06 P2290R0 SG22 Compatability,EWG Evolution
P2295R4 Support for UTF-8 as a portable source file encoding Corentin Jabot 2021-06-14 2021-06 P2295R3 SG16 Unicode,SG22 Compatability,EWG Evolution
P2299R3 `mdspan`s of All Dynamic Extents Bryce Adelstein Lelbach 2021-06-07 2021-06 P2299R2 LEWG Library Evolution
P2300R0 `std::execution` Michał Dominiak 2021-06-16 2021-06   SG1 Concurrency and Parallelism,LEWG Library Evolution
P2301R1 Add a pmr alias for std::stacktrace Steve Downey 2021-06-14 2021-06 P2301R0 LWG Library
P2321R2 zip Tim Song 2021-06-11 2021-06 P2321R1 LWG Library
P2322R3 ranges::fold Barry Revzin 2021-06-13 2021-06 P2322R2 LEWG Library Evolution
P2340R1 Clarifying the status of the "C headers" Thomas Köppe 2021-06-11 2021-06 P2340R0 SG22 Compatability,LEWG Library Evolution,LWG Library
P2347R0 Argument type deduction for non-trailing parameter packs Corentin Jabot 2021-06-14 2021-06   EWG Evolution
P2361R1 Unevaluated string literals Corentin Jabot 2021-06-11 2021-06 P2361R0 SG16 Unicode,EWG Evolution
P2368R1 2021 Spring Library Evolution Polls Bryce Adelstein Lelbach 2021-05-27 2021-06 P2368R0 LEWG Library Evolution
P2370R0 Stacktrace from exception Andrei Nekrashevich 2021-06-08 2021-06   LEWGI SG18: LEWG Incubator,LEWG Library Evolution,LWG Library
P2380R1 reference_wrapper Associations Robert Leahy 2021-06-03 2021-06 P2380R0 LEWG Library Evolution
P2384R0 2021 Spring Library Evolution Poll Outcomes Bryce Adelstein Lelbach 2021-06-07 2021-06   LEWG Library Evolution
P2385R0 C++ Standard Library Issues to be moved in Virtual Plenary, June 2021 Jonathan Wakely 2021-05-26 2021-06   All of WG21
P2386R0 Core Language Working Group "ready" issues for the June, 2021 meeting William M. (Mike) Miller 2021-06-25 2021-06   All of WG21
P2387R0 Pipe support for user-defined range adaptors Barry Revzin 2021-06-12 2021-06   LEWG Library Evolution
P2388R0 Abort-only contract support Andrzej Krzemieński 2021-06-15 2021-06   SG21 Contracts
P2390R0 Add annotations for unreachable control flow Jens Gustedt 2021-06-07 2021-06   SG22 Compatability
P2391R0 C23 Update Report Aaron Ballman 2021-06-07 2021-06   All of WG21
P2392R0 Pattern matching using "is" and "as" Herb Sutter 2021-06-14 2021-06   EWG Evolution
P2393R0 Cleaning up integer-class types Tim Song 2021-06-12 2021-06   LWG Library
P2395R0 WG21 2021-06 Virtual Meeting Record of Discussion Nina Ranns 2021-06-24 2021-06   All of WG21
P2396R0 Concurrency TS 2 fixes David Goldblatt 2021-06-14 2021-06   LEWG Library Evolution,LWG Library
P2397R0 SG16: Unicode meeting summaries 2021-04-14 through 2021-05-26 Tom Honermann 2021-06-15 2021-06   SG16 Unicode
P2400R1 Library Evolution Report: 2021-02-23 to 2021-05-25 Bryce Adelstein Lelbach 2021-06-07 2021-06 P2400R0 All of WG21

How To Detect Function Overloads in C++17/20, std::from_chars Example--Bartlomiej Filipek

Which way you prefer?

How To Detect Function Overloads in C++17/20, std::from_chars Example

by Bartlomiej Filipek

From the article:

The problem: a library function offers several overloads, but depending on the implementation/compiler, some of the overloads are not available. How to check the existence of an overload? And how to provide a safe fallback?

In this article, I’ll show you a background “theory” and one case - std::from_chars that exposes full support for numbers or only integer support (in GCC, Clang)...