Checked integers keep both the integer value and a "valid" flag. Default-constructed guarded ints are invalid, and guarded integers constructed from an integer value are valid and hold that value. Guarded integers are somewhat analogous to a TOptional in semantics, and borrow some of the function names.