C ++ 20 ha introdotto ilstd::ssize() funzione gratuita come di seguito:
template <class C>
constexpr auto ssize(const C& c)
-> std::common_type_t<std::ptrdiff_t,
std::make_signed_t<decltype(c.size())>>;
Una possibile implementazione sembra usare static_cast, per convertire il valore restituito dalla size()funzione membro di cl ass C nella sua controparte firmata.
Dal momento che il size() funzione membro di C restituisce sempre valori non negativi, perché qualcuno dovrebbe volerli memorizzare in variabili con segno? Nel caso in cui si voglia davvero, è una questione di semplice static_cast.
Perché è stato std::ssize()introdotto in C ++ 20?
ssizeofoperatore.
charha) sono ereditate da C e almeno un po 'alleviate da (u)intX_t, ma è ancora una fonte infinita di bug altrettanto sottili e critici. Cose come ssizesono solo patch, e ci vorrà del tempo (forse "per sempre") prima che questo affondi nelle comuni "guide alle migliori pratiche" che le persone (possono) seguire rigorosamente.
(u)intX_ttipi sono opzionali , vero?)