C ++ 20std::ssize()
은 아래와 같이 무료 기능을 도입했습니다 .
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 멤버 함수의 static_cast
반환 값을 서명 된 대응 항목 으로 변환하는 것 같습니다 .size()
size()
C 의 멤버 함수는 항상 음이 아닌 값을 반환 하기 때문에 서명 된 변수에 저장하려는 사람이있는 이유는 무엇입니까? 정말로 원하는 경우에는 간단 static_cast
합니다.
std::ssize()
C ++ 20에 도입 된 이유는 무엇 입니까?
ssizeof
연산자도 추가하면됩니다 .
char
가 얼마나 많은 비트를 가지고 있는지 알지 못하는 것과 같은 ) C에서 상속되고 최소한.에 의해 어느 정도 완화 되었다고 주장 할 수 (u)intX_t
있지만 여전히 똑같이 미묘 하고 중요한 버그 의 끝없는 소스입니다 . 같은 ssize
것은 패치 일 뿐이며, 이것이 사람들이 엄격하게 따를 수있는 일반적인 "모범 사례 지침"에 빠질 때까지 (아마도 "영원히") 시간이 걸립니다.
(u)intX_t
유형은 선택 을 수행?)