This is a template meant to be instantiated on top of regular basic integer types. The code is written so the logic is integer-size agnostic and uses just regular C++ arithmetic operations. It is assumed to run on a two's complement integer platform (which is all we support, and as of C++20 is contractual). You should generally use the specializations FGuardedInt32 and FGuardedInt64 below.