[snips]
Yes qsort() takes two size_t's as well. So we are OK. The system does work,
but only so long as we are absolutely consistent in using size_t everywhere.
My proposal is to 1) make size_t signed, 2) rename it int.
And thereby break reams of code, and produce yet another situation where
the solution simply does not work.
Current:
void *buff = malloc( 40000U );
int size = 40000;
Oops. The malloc works, but the size is wrong. So your solution requires
either:
1) Forcing 16-bit implementations to limit allocations to 32767 or fewer
bytes
2) Forcing 16-bit implementations to emulate larger ints.
Hmm. Turns out the same problem occurs with 32-bit implementations, as
one can trivially allocate regions > 2GB, but a 32-bit int won't work. So
32-bit implementations (and 16-bit ones, too) will have to use 64-bit ints
for everything, making both 32-bit and 16-bit implementations hellishly
inefficient, or simply crippled in terms of memory allocation.
So your proposal is to cripple the language or force it to result in
massively inefficient operations, all because you don't like some feature
which has worked perfectly well for at least some 17 years.
Somehow I think we'll choose to err on the side of sanity on this one; not
a single thing you've offered has given a single real justification for
eradicating size_t, other than to suit your personal pet peeves - and that
might make you happy, but crippling the language to make you happy just
isn't a terribly compelling argument.