From Acrobatics to Ergonomics - A Field Report on How to Make Libraries Helpful

Speaker: Joel FALCOU

Audience level: [Intermediate | Advanced]

Thanks to features like concepts, C++20 promised to make template meta-programming more approachable and expressive, especially for library designers. But as we quickly learned, template programming can still be surprising or frustrating — in the worst-case scenario, it's both.

In this talk, I’ll share lessons from the past 3–4 years of building high-performance, user-friendly C++ libraries, including: 

  • EVE, a SIMD abstraction layer designed for performance and portability.
  • KUMI, a re-imagined tuple library with algorithmic support.
  • KIWAKU, a toolkit for multi-dimensional arrays that aims to be efficient and ergonomic.

We’ll explore the practical challenges of designing ergonomic C++ APIs:

  • Error messages that make sense: `static_assert` or concepts? How to avoid large template error stacks? ... 
  • APIs that align with user intuition: How do we provide options on the functions' semantics? How to design meaningful extension points, ...
  • How bold design decisions can pay off: going sideways with standard practices, turning CTAD upside-down, ...

We'll discuss how C++20 features helped us reduce friction and increase clarity once we use them properly.
If you’ve ever screamed into the void over template errors, please join in!