Да, это возможно, size_t
и int
не обязательно имеют одинаковый размер. На самом деле очень распространено иметь 64-битные size_t
с и 32-битные int
с.
C ++ 11 черновик N3290 говорит об этом в §18.2 / 6:
Тип size_t является целочисленным типом без знака, определенным реализацией, который является достаточно большим, чтобы содержать размер в байтах любого объекта.
unsigned int
, с другой стороны, требуется только для того, чтобы иметь возможность хранить значения от 0 до UINT_MAX
(определены в <climits>
и следуют стандартному заголовку C <limits.h>
), который гарантированно будет не менее 65535 (2 16 -1). * * тысяча двадцать-одна