
Type Erasure Case Study & Constexpr Debugger
About this event
Hi everyone!
Please save the date and RSVP for another Meetup. We are back to JetBrains with two incredible speakers from Think-Cell and JetBrains.
Schedule
18:00 - doors open, networking, pizza
18:50 - we start with the intro from the orgs
19:00 - First talk with Q&A afterwards
20:00 - Small break and the second talk with Q&A afterwards
21:10 - Networking, pizza
22:00 - closing the doors
Speaker: Jan Wilczek
Bio: I'm a C++ developer, a conference speaker, and an online course creator from think-cell. My background is in audio plugin and app development. I work from home in Katowice, Poland.
Title: Using Type Erasure to Extend APIs You Don't Own: A Case Study From Audio Plugin Development
Description: Application developers sometimes hit a limitation of a 3rd-party library or framework. The Type Erasure design pattern can help us overcome such limitations without the need to change the 3rd-party API.
Type Erasure is a relatively complex design pattern that allows us to treat a set of unrelated classes as if they shared a common base class, while preserving value semantics. The downside is increased code bloat and code complexity as the pattern requires a significant amount of additional code.
There have been quite a few talks explaining HOW to implement Type Erasure, while the topic of WHEN has been rarely discussed. Should we always use type erasure instead of virtual polymorphism? And if not, then what are the criteria?
This talk will show a concrete example from the audio programming industry of how Type Erasure allowed adding new functionalities to the parameter class system of the JUCE C++ framework without changing its API. As such, the talk will be useful for application and library developers who use 3rd party libraries but need an extra degree of flexibility.
You will come out of the talk understanding
- what Type Erasure is,
- when to use it, and
- how to implement it.
You don't need to understand Type Erasure, audio development, or JUCE to attend the talk; the necessary minimum will be explained during the talk.
Speaker: Artemy Pestretsov
Bio: Artemy started as a C++ developer, taught programming languages at university, and then moved into developer tools at JetBrains. He’s worked on IDEs such as PhpStorm and Fleet, including integrating dataflow analysis with the debugger to help developers understand and predict code behavior. Passionate about developer productivity, he eventually found his way back to C++, leading CLion and later taking responsibility for JetBrains’ C and C++ direction. He is now Head of C and C++ Ecosystems at JetBrains, focusing on improving the day-to-day experience of C and C++ developers through better tools and workflows.
Title: Debugging constexpr evaluation
Description: Modern C++ keeps pushing more logic into constexpr/consteval: parsers, tables, DSLs, hashing -- code with branches, state, and failure modes that happen before your program ever runs. When something goes wrong at compile time, you can either try to guess the reason from the compiler’s notes or de‑constexpr it... and hope the runtime reproduction matches what the compiler actually did.
In this talk, we’ll treat compile-time execution as something you can debug rather than guess. Using CLion’s constexpr debugger, we’ll step through constexpr evaluation, inspect values as they evolve, and see which if constexpr branches fired. We’ll also go deeper under the hood: how constant evaluation is represented, what makes debugging possible, and today’s limits.
Venue
JetBrains
Terrace Tower building, 3rd floor Event Space,
Parkeerplaats, Gelrestraat 16
1079 MZ Amsterdam
Google Maps:https://goo.gl/maps/rEo5qMnXLK3YNkNy5
Note that parking spots are (unfortunately) not available for the meetup attendees.
Source: meetup