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中引入?
ssizeof运算符。
char有多少位)是从C继承的,至少被减轻了一点(u)intX_t,但这仍然是源源不断的同样细微和关键的错误。诸如此类ssize的东西只是补丁,将需要一段时间(也许是“永远”),直到它陷入人们(可以)严格遵循的通用“最佳实践指南”中。
(u)intX_t类型是可选的,你呢?)