Why is std::ssize() introduced in C++20?
C++20 introduced the std::ssize() free function as below: template <class C> constexpr auto ssize(const C& c) -> std::common_type_t<std::ptrdiff_t, std::make_signed_t<decltype(c.size())>>; A possible implementation seems using static_cast , to convert the return value of the size() member function of cl ass C into its signed counterpart. Since the size() member function of C always returns non-negative values, why would anyone want to store them in signed variables? In case one really wants to, it is a matter of simple static_cast . Why is std::ssize() introduced in C++20? Nadav Har'El The