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
,将类C的size()
成员函数的返回值转换为它的有符号对应项。
由于C的size()
成员函数总是返回非负值,为什么会有人想要将它们存储在有符号变量中呢?如果确实需要,那么只需要进行简单的static_cast
即可。
为什么在C++20中引入了std::ssize()
?
ssizeof
操作符就好了。 - gezachar
有多少位)是从C语言继承而来,至少通过(u)intX_t
有所缓解,但仍然存在无穷无尽的微妙却又关键性的错误源。像ssize
这样的东西只是临时补救措施,而且需要花费一定的时间(也许是“永远”)才能深入人心成为常见的“最佳实践指南”,并被人们严格遵循。 - Marco13(u)intX_t
类型是可选的,对吗?) - DevSolar