Size: a a a

2020 September 08

A

Alex in pro.cxx
я там уже был, вопрос - зачем так сделано, не могу придумать никакого смысла, одни неприятности
источник

D

Danya in pro.cxx
Alex
А зачем std::count_if возвращает тип iterator_traits<InputIt>::difference_type, а не size_t? Из-за этой фигни count_if не компилится с кастомными итераторами, хотя сама имплементация нормальная, проблема только в типе результата.
Кастомный интегратор неправильно реализован
источник

D

Danya in pro.cxx
difference_type должен быть у итератора
источник

A

Alex in pro.cxx
нормально он реализован, ещё не хватало портянку трейтов и вложенных типов писать
источник

CD

Constantine Drozdov in pro.cxx
Alex
я там уже был, вопрос - зачем так сделано, не могу придумать никакого смысла, одни неприятности
потому что iterator::index_type нет, потому что у итератора нет доступа по индексу
источник

A

Alex in pro.cxx
а если он не вычитаемый?
источник

A

Alex in pro.cxx
да при чём здесь индекс? count_if делает ++итератора, проверяет границы, вызывает предикат и делает ++ счётчика
источник

A

Alex in pro.cxx
ему нафиг не нужны эти трейты
источник

CD

Constantine Drozdov in pro.cxx
Alex
да при чём здесь индекс? count_if делает ++итератора, проверяет границы, вызывает предикат и делает ++ счётчика
и что
источник

A

Alex in pro.cxx
он не может вернуть число меньше нуля
источник

CD

Constantine Drozdov in pro.cxx
Alex
а если он не вычитаемый?
непонятно, почему difference_type связан с вычитаемостью итератора
источник

D

Danya in pro.cxx
Alex
нормально он реализован, ещё не хватало портянку трейтов и вложенных типов писать
Вы не выполнили требования LegacyIterator
источник

A

Alex in pro.cxx
а что должен обозначать difference_type, если у итератора только одна валидная операция - ++ ?
источник

SE

Stanislav Ershov in pro.cxx
The number of increments needed to go from first to last. The value may be negative if random-access iterators are used and first is reachable from last (since C++11)
источник

SE

Stanislav Ershov in pro.cxx
вот нашел тебе
источник

SE

Stanislav Ershov in pro.cxx
в описании std::distance
источник

N

Neargye in pro.cxx
Alex
а что должен обозначать difference_type, если у итератора только одна валидная операция - ++ ?
difference_type - a signed integer type that can be used to identify distance between iterators
источник

A

Alex in pro.cxx
хм, спасибо
источник

CD

Constantine Drozdov in pro.cxx
Alex
а что должен обозначать difference_type, если у итератора только одна валидная операция - ++ ?
напиши ptrdiff_t и не трогай
источник

A

Alex in pro.cxx
но всё равно бред, похоже на баг в стандарте, логике count_if не нужен этот тип
источник