Date: Wed, 8 Oct 2025 15:23:39 +0000
Why is it allowed to return a signed integer? C++ users are accustomed to the fact that the size_type of containers is an unsigned integer, so the size of containers should also return an unsigned integer. sizes that return negative numbers are pathological and cannot be used. The current specification forces writers of generic algorithms to convert the result to unsigned on every call to ranges::size, which is something ranges::size should have taken care of. If they don't do this, the compiler will complain about signed and unsigned mismatches. C++20 also added ranges::ssize, which always returns a signed integer. If generic algorithms prefer signed integers, they can use ranges::ssize. Therefore, it makes no sense for `ranges::size` to preserve the signedness of the return type of containers' size. Does C++ need ranges::usize? I believe the answer is clearly no. If C++ doesn't fix ranges::size in a timely manner, perhaps one day users will invent ranges::usize themselves and then tell others not to use ranges::size.
Received on 2025-10-08 15:23:47
