Slides:
https://github.com/boostcon/cppnow_presentations_2017/blob/master/05-19-2017_friday/customization_points_that_such_less__michal_dominiak__cppnow_05-19-2017.pdfVideo:
https://www.youtube.com/watch?v=LC7BuYeDezQFlexible customization points are a hard thing to provide in C++. Some - and this includes the standard library - go the way of template specializations, but everyone 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.