This is exactly what I’ve been wishing for for ages!
The main downside is requiring C++20 since that does make it a bit less portable to compilers which haven’t caught up to the standard — each new standard revision adds a great deal of complexity which even the Big Three compilers tend to take years to finish implementing, so the smaller fish really do get left out of the picture. As I understand it, those are typically semi-compliant implementations of GCC on embedded devices, or on historical hardware, where a library with zero stdlib dependencies would be super useful, but can’t really be used here due to the modern language standard.
So, necessity demands you rewrite this as a C89 macro library.
The main downside is requiring C++20 since that does make it a bit less portable to compilers which haven’t caught up to the standard — each new standard revision adds a great deal of complexity which even the Big Three compilers tend to take years to finish implementing, so the smaller fish really do get left out of the picture. As I understand it, those are typically semi-compliant implementations of GCC on embedded devices, or on historical hardware, where a library with zero stdlib dependencies would be super useful, but can’t really be used here due to the modern language standard.
So, necessity demands you rewrite this as a C89 macro library.