C ++ 20 представил функцию std::ssize()
free, как показано ниже:
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?