Library design used to seem easy: Model the problem domain with classes which sometimes inherit from one another, throw in a few free functions, and you’re done. Modern library design is unrecognizable from that frame of reference: Customization point objects, expression equivalence, perfect forwarding, a seemingly-endless list of edge cases and sharp edges understood only by experts.
This journey from simple to complicated didn’t occur without reason. Putting complexity into libraries transfers that complexity into a single place where it can be dealt with once. Improving genericity by considering and handling edge cases and seemingly-obscure use cases furthers the concentration of complexity by increasing the reach and leverage of C++ libraries.
This talk will explore modern C++ library design principles using the real-world example of a library which interfaces with a time series database. CPOs and generic algorithms form the foundation of this C++ library. Sophisticated uses of std::variant, CTAD, and immovable types will be introduced. Attendees will gain actionable insights into designing modern C++ libraries to address complex software engineering challenges.
View Slides
Robert is a graduate of the University of Victoria where he specialized in graphics, gaming, and digital geometry processing. After spending 4.5 years in full stack web development he pivoted to financial infrastructure in late 2016 whereafter he spent nearly nine years at a start up working on next generation financial market data storage and retrieval mechanisms. In 2019 he became involved in the ISO C++ committee with a particular focus on library evolution. Since summer 2025 he has worked as a core developer at Hudson River Trading.