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
类型是可选的,你呢?)