Braden Ganetsky serves as the Secretary of WG21, the ISO C++ committee. Braden graduated from the University of Manitoba with a degree in mechanical engineering, fueled by his passion for mechanical puzzles. During his final year of school, when all classes and activities were remote, he discovered C++ and has been hooked ever since. He interned as a C++ developer, which turned into a full time job, completing a successful pivot of his career. Now he spend his nights working on fun projects like parser combinators, constexpr unit testing, and getting involved in the C++ community.
It is common knowledge that good software design practices involve unit testing your code. With more and more C++ code being executed at compile-time, it's necessary that we also write unit tests that check the validity at compile-time. However, this is no trivial matter. Just like with regular run-time code, we cannot reasonably claim that the code works in all its intended purposes unless it is tested and empirically shown to work. In very rare cases, a compiler's output can even vary between compile-time and run-time, given identical source code. This talk will build up a compile-time-centric unit testing library, […]
Can we replace everything in our code with lambdas? Is it possible to write an entire useful application using only lambdas? Let's lambda all the things! This talk will go through parts of the C++ standard library and try to use lambdas to replace it all. The type traits, a class with data members, and so much more. Let's pinpoint the minimum number of classes and functions required in C++23, using lambdas wherever else we can. Can we emulate everything in C++ using only lambdas? Come to this talk and find out!
Expression templates are one of the wonders that set C++ apart from all other programming languages. Using just the C++ type system, we can store arbitrary information in a type, giving us a way to calculate anything at compile-time. As years have gone by, we now have new ways of expressing compile-time computation, removing the need for relics of the past like expression templates. However, for some of us, expression templates remain a fascination, bordering on obsession. Regardless of the paradigm, unit testing code at compile-time is no trivial matter. In very rare cases, a compiler's output can vary between […]