Speakers

JASON TURNER

Consultant and Trainer

Entire classes of bugs can be avoided with strong types. Unfortunately, using stronger types often feels like a burden to the developer. We will examine why stronger typing is beneficial and explore contemporary techniques for how to make it easier to use stronger types.

INBAL LEVI

Lead Software Engineer at Millennium
Director, ISO C++ Foundation

With a proposal slated to introduce reflection to C++26 (including the “std::meta” namespace) getting strong support in WG21, we can already start imagining a whole new world of possibilities. In this session, we will dive into reflection and its transformative potential within our codebases. We will start with an introduction of utilities from the reflection proposal. Then, we delve deeper into practical applications and demonstrate solutions to problems that commonly use reflection and the power it holds. For the last part, we will explore the possibilities within “Reflection Libraries”. This includes both “traditional” libraries which provide functionality, and more “novel” approaches which reshape users’ code. We will look at examples of what such libraries can cover, and demonstrate potential directions the future holds. This talk will also include updates on the status of “Reflection” since the ACCU 2024 keynote. Join us as we traverse the meta::[[verse]]!

CONOR HOEKSTRA

Research Scientist at NVIDIA
Co-host ADSP: The Podcast

Fusing algorithms across languages and accelerating code on the CPU and GPU. This talk will discuss C++ Ranges, Rust Iterators, Swift Lazy Sequences, Python Itertools and more. Different GPU techniques will include CUDA Thrust with nvcc, C++ stdpar with nvc++, CuPy, and more. Finally, the results of profiling these approaches will be shown.

MARTIJN TERPSTRA

Software Engineer at IMC Trading

Logging is one of the backbones of an application. In the multi-threaded low-latency world, it’s crucial to have efficient low-overhead logging. This talk is a deep dive into designing this framework, including the small details that matter for performance.

BRYCE ADELSTEIN LELBACH

Principal Architect at NVIDIA
Co-host ADSP: The Podcast

At the heart of the C++ programming language is the multi-threaded abstract machine and its execution model, the platform-agnostic formal model that generically describes how to run a C++ program. In this talk, you will learn the rules that govern how your C++ code is executed and see how those rules impact the C++ code you write every day. 

We’ll explore the C++ execution and memory model, and discuss fundamental questions such as: 

* What are threads in C++ and how do they interact? 
* What is memory in C++? 
* In what order are things in my C++ program executed? 
* How are C++ expressions and statements executed? 
* What are the semantics of calling a function in C++? 
* What does “happens before” mean? 

If you’re interested in gaining a deeper understanding of how your C++ code is executed and how concurrency works in C++, you should attend this talk.

BJÖRN FAHLLER

Senior developer at Net Insight

Experience has shown that when working with data in bulk, or when the data sets are small, structs of vectors is the way to go for performance. Working with structs of vectors can be cumbersome, however. Let’s have a look at what can be done with the recent additions to the C++ language and standard library. 

FREDRICK OMONDI

Software Engineer at Intel Corporation

Have you ever fancied delving into high-performance computing? Whether you’re a novice or a seasoned pro looking to unleash the full potential of your GPU, this session will equip you with the skills to get the most out of your GPU. This talk will begin by introducing high-performance computing and various GPU programming frameworks. It will then delve into GPU programming constructs and profiling GPU kernels to maximize performance and efficiency. To wrap it up, we’ll put the bits and pieces into practice by live coding a SYCL kernel. Topics discussed will include blocks, work items, work ranges, memory barriers and fences, parallel algorithms, GPU occupancy levels, copy times, and memory access patterns.

BAREND GEHRELS

Staff Software Engineer at TomTom

Boost.Geometry is one of the most popular libraries within the Boost C++ Libraries. This presentation will provide an in-depth exploration of Boost.Geometry, highlighting its design principles centered around C++20 concepts, tag dispatching, and template meta programming using traits. We will illustrate Boost.Geometry’s distance algorithm both from a user perspective and from the C++ design perspective, and how one function call can work for different types and coordinate systems. Additionally, a brief live example will be demonstrated. From this hands-on introduction of Boost.Geometry, participants will gain valuable insights into the application of concepts and traits in a real-world, large-scale library, empowering them to apply this knowledge in their own C++ development projects.

PHIL NASH

Consultant and Trainer

Lifetime management in C++ offers flexibility and power, but it comes with significant complexity, especially as the language has evolved. The Rules of 0 and 5 are essential for managing this complexity. Ideally, your types should require no Special Member Functions (like destructors, copy/move constructors, or assignment operators). However, if you do need one, you’ll likely need all five, and knowing how to implement them correctly can be challenging. Understanding the type you’re working with is crucial, so we’ll break down the common categories.

Come with us on a journey through these rules, type categories and behaviours and start to make sense of lifetimes in modern C++.

LIEVEN DE COCK

Principal Engineer Software at ST Engineering iDirect

Before C++20 we had to write six comparison operators for our user defined types (or even more). For sure, a tedious task. All this gets simplified with the introduction of the spaceship operator. What happens to your code when you turn on -std=c++20 — even before we go near the spaceship operator, did your build break? Why does that happen? We will first investigate another new feature of C++20, the rewriting rules, and how that impacts your code base. Then we will dissect the spaceship operator, both how it is used and its implementation. What are comparison categories and why are these important with respect to the spaceship operator? All will be answered. What initially looked so simple does require some extra thought to correctly use the tool. We will discuss its traps and some of the less trivial considerations of this new operator.