C ++ 20std::ssize() , aşağıdaki gibi ücretsiz işlevi tanıttı :
template <class C>
constexpr auto ssize(const C& c)
-> std::common_type_t<std::ptrdiff_t,
std::make_signed_t<decltype(c.size())>>;
Cl ass C üye fonksiyonunun static_castdönüş değerini dönüştürmek için olası bir uygulama kullanıyor gibi görünüyorsize() imzalı karşılığına .
Yana size()C üyesi fonksiyonu daima negatif olmayan değerleri döndürür, neden kimse Talep imzalı değişkenler bunları saklamak için mi? Birinin gerçekten istemesi durumunda, bu bir basit meseledir static_cast.
Neden std::ssize()C ++ 20'de tanıtıldı?
ssizeofoperatör de eklerlerse .
char) C'den miras alındığı ve en azından bir şekilde hafifletildiği (u)intX_tiddia edilebilir , ancak yine de eşit derecede ince ve kritik hataların sonsuz bir kaynağıdır . Bu tür şeyler ssizeyalnızca yamalardır ve bu, insanların titizlikle takip edebileceği () yaygın "en iyi uygulama kılavuzlarına" girmesi biraz zaman alır (belki "sonsuza kadar").
(u)intX_ttürleridir opsiyonel öyle mi?)