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())>>;
Run Code Online (Sandbox Code Playgroud)
似乎可以使用实现static_cast,将size()cl ass C的成员函数的返回值转换为其已签名的对应函数。
由于size()C 的成员函数始终返回非负值,为什么有人会将它们存储在带符号的变量中?万一真的要,那很简单static_cast。
为什么std::ssize()在C ++ 20中引入?