Argument Values and size_t

In contrast to return values, it may be helpful to use size_t type for function parameters that represent sizes or dimensions of objects. Using size_t lets callers pass either unsigned or size_t arguments without warnings. While this minimizes impact on existing code, it relies on the function to raise an assert, or throw an exception when an unexpected value is passed in. If a function needs to impose a 32-bit limit internally, it can assert that the size_t value is less than 4GB before using the argument as a 32-bit value. This practice is not recommended, as it avoids compile time checks, and increases the risk of runtime errors.