There are many, many, many function-like macros defined all over the code. These aren't type safe, and are harder to debug. They should all be replaced with either regular functions, or with static inline template functions, depending on what's sensible.
This page will serve as the blueprint specification. I will document what I investigate here and what I do. I'm going to start by picking 1 header file and slowly looking into how I can replace any macro functions which it contains with inline template functions.