С++ 20 представил свободную функцию std::ssize()
как 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()
класса C в ее подписанный аналог.
Поскольку функция-член size()
в C всегда возвращает неотрицательные значения, зачем кому-то хотеть хранить их в знаковых переменных? В случае, если кто-то действительно хочет, это просто static_cast
.
Почему std::ssize()
введен в С++ 20?