Schedule
Here are the schedule for Thursday and Friday! Please note each date requires its own separate ticket.
C++ Under the Sea is a new conference in the Netherlands, featuring speakers across industries who share insights and wonders about C++. Located in beautiful Breda, C++ Under the Sea is easily accessible by train from several countries, and with convenient airports as well.
The conference is an extension of the Dutch C++ meetup group, which has enjoyed regular meetings at high-profile venues across the Netherlands since 2013, with nearly 1,700 members.

Speakers
The Dutch C++ Meetup group has enjoyed many high-profile speakers from around the world since its inception years ago. These have included members of the ISO C++ committee, well-known C++ trainers, and many industry professionals working in northwest Europe.
OPENING KEYNOTE SPEAKER
JASON TURNER

Consultant and Trainer
Strong Types – Better C++
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.
CLOSING KEYNOTE SPEAKER
INBAL LEVI

Lead Software Engineer at Millennium Director, ISO C++ Foundation
Welcome to 0.1 of the meta::[[verse]]!
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]]!
SPEAKER LINEUP
CONOR HOEKSTRA

Research Scientist at NVIDIA
Co-host ADSP: The Podcast
Arrays, Fusion, CPU vs GPU
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
Low Overhead Multi-threaded Logging for Low-latency Applications
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
The C++ Execution Model
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.
BJÖRN FAHLLER

Senior developer at Net Insight
Cache-friendly data + functional + ranges = ❤️
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
Introduction to Writing and Profiling GPU Kernels
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
Exploring Boost.Geometry: A Library Based on Concepts, Traits and Tag Dispatching
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
Mastering the Special Member Functions : The Rules of 0 to 5 and Beyond
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 learn to make sense of lifetime management in modern C++.
LIEVEN DE COCK

Principal Engineer Software at ST Engineering iDirect
Space Invaders: The Spaceship Operator is upon us
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.
Workshops
On October 10, three pre-conference workshops will offer hands-on training in various topics such as C++ Concepts, compile-time resources, and coroutines.
These all-day, specialized workshops will be conducted by instructors Mateusz Peuz, Phil Nash, and Jason Turner, providing in-depth instruction on utilizing these language features.
JASON TURNER

Applied constexpr: The Power of Compile-Time Resources
MATEUSZ PUSZ

C++ Concepts: Constraining C++ Templates in C++20 and Before
PHIL NASH

Understanding C++ 20 Coroutines
Please note that these workshops require separate tickets from the main conference. You have the option to attend either or both days. Lunch and refreshments are included, and don’t forget to bring your laptop!
Location
Breepark is a new and modern conference facility in Breda, the Netherlands. Easily accessible by public transit from downtown Breda and by train from surrounding countries.
More info on travel directions and discover the highlights of Breda here.


Sponsors
These are the companies that make everything possible.
Getting to Breepark, Breda
Breepark is located directly on the A27 and therefore accessible by car. Plus, there are more than 2,000 free parking spaces!
If you are planning your journey from abroad, you can book your international journey to Breda with NS International train.
By car you can reach Breepark from the center of Breda in about fifteen minutes. By bike it is about twenty minutes ride from the center of Breda to Breepark. Uber is also an option.
On this page you will find the map of Breepark.
Check out the official website of the Municipality of Breda to know how to get around in Breda, discover places to visit and tips on where to stay.
Bus 130
It is super easy to reach the venue by bus from Central Station in Breda.
Here are the available bus times from Breda Central Station to Breepark that will get you there in time for the reception. Note that these times are for bus 130. After these listed times, the bus runs only once per hour, so please plan accordingly. More info: bus 130.














