Michał Dominiak


Bachelor of Engineering in Computer Science from Wrocław University of Technology. Professional and enthusiast programmer. Interested in the foundational problems of computing, from the lowest levels of CPU architectures, through operating systems and programming language design. Sometimes also a guitar player and singer.



Customization points that suck less (2017)

Flexible customization points are a hard thing to provide in C++. Some – and this includes the standard library – go the way of template specializations, but anyone who ever needed to create a customization point of this kind for a type (and a template) somewhere several namespaces deep knows how much pain this involves.

Others go the way of free functions, relying on ADL to select the proper overload – but ADL isn't the most user-friendly mechanism that exists in C++.

In this talk I'll attempt to enumerate the various means of providing customization points for library (and core language!) features, including several case studies of how this is done in different libraries, and will propose one that I haven't seen in the wilds before (but am sure that it exists somewhere), and show how to integrate it with type erasure. I'll also talk about how this relates to Concepts TS – and a thing called “virtual concepts”, which is an attempt at marrying Concepts with type erasure.