C ++ 20 a introduit lestd::ssize() fonction gratuite comme ci-dessous:
template <class C>
constexpr auto ssize(const C& c)
-> std::common_type_t<std::ptrdiff_t,
std::make_signed_t<decltype(c.size())>>;
Une implémentation possible semble utiliser static_cast, pour convertir la valeur de retour de la size()fonction membre de cl ass C en son équivalent signé.
Depuis le size() fonction membre de C renvoie toujours des valeurs non négatives, pourquoi quelqu'un voudrait-il les stocker dans des variables signées? Au cas où on le voudrait vraiment, c'est simple static_cast.
Pourquoi est std::ssize()introduit dans C ++ 20?
ssizeofopérateur.
chara) sont héritées de C et au moins quelque peu atténuées par (u)intX_t, mais c'est toujours une source infinie de bogues tout aussi subtils et critiques. Des choses comme ssizene sont que des correctifs, et cela prendra un certain temps (peut-être "pour toujours") jusqu'à ce que cela pénètre dans les "guides des meilleures pratiques" que les gens (peuvent) suivre rigoureusement.
(u)intX_ttypes sont en option , pensez - vous?)