Incidentally, still not a fan of assert() in library code.
And I still don't understand why: they are very useful comments, they catch errors and if somebody does not like them it's easy to turn them off with `NDEBUG`, so the user ultimately has the choice to compromise between detecting problems early and keep going and hoping everything's fine. Removing assertions takes away advantages without giving any advantage that can't be easily obtained already with `NDEBUG`.