C ++ 20 представил std::ssize()
бесплатную функцию, как показано ниже:
template <class C>
constexpr auto ssize(const C& c)
-> std::common_type_t<std::ptrdiff_t,
std::make_signed_t<decltype(c.size())>>;
Возможная реализация, похоже, использует static_cast
для преобразования возвращаемого значения функции- size()
члена cl ass C в ее подписанный аналог.
Поскольку size()
функция-член C всегда возвращает неотрицательные значения, зачем кому-то хранить их в переменных со знаком? Если кто-то действительно хочет, это очень просто static_cast
.
Почему std::ssize()
введен в C ++ 20?