As stated at cppreference (emphasis mine):
The value of std::numeric_limits::digits is the number of digits in base-radix that can be represented by the type T without change. For integer types, this is the number of bits not counting the sign bit and the padding bits (if any). For floating-point types, this is the number of digits in the mantissa.
It is possible for an implementation to add padding bits to the fundamental types. Is there any implementation where any of these types are actually padded? Is this wording necessary to support all hardware or is this just the standard being paranoid?
std::numeric_limits<bool>::digits
returns 1, indicating bool
is padded (typically 7 of 8 bits).