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_cast
dö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ı?
ssizeof
operatör de eklerlerse .
char
) C'den miras alındığı ve en azından bir şekilde hafifletildiği (u)intX_t
iddia edilebilir , ancak yine de eşit derecede ince ve kritik hataların sonsuz bir kaynağıdır . Bu tür şeyler ssize
yalnı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_t
türleridir opsiyonel öyle mi?)