¿Por qué es size_t sin firmar?

Bjarne Stroustrup escribió en El lenguaje de programación C ++:

Los tipos de enteros sin signo son ideales para usos que tratan el almacenamiento como una matriz de bits. El uso de un unsigned en lugar de un int para obtener un bit más para representar enteros positivos es casi nunca una buena idea. Los intentos de garantizar que algunos valores sean positivos declarando que las variables no están firmadas normalmente serán vencidos por las reglas de conversión implícitas.

tamaño_t parece estar sin firmar "para ganar un bit más para representar enteros positivos". Entonces, ¿fue esto un error (o intercambio), y si es así, deberíamos minimizar su uso en nuestro propio código?

Otro artículo relevante de Scott Meyers esaquí. Para resumir, recomienda no usar interfaces no firmadas, independientemente de si el valor es siempre positivo o no. En otras palabras,incluso si los valores negativos no tienen sentido, no debería usar necesariamente sin firmar.

Respuestas a la pregunta(4)

Su respuesta a la pregunta