21 мартаst комитет по стандартам проголосовал за прекращение поддержки std::iterator
. предложено в P0174 а>:
Длинная последовательность аргументов void гораздо менее понятна читателю, чем просто предоставление ожидаемых
typedef
в самом определении класса, что является подходом, принятым в текущем рабочем проекте, следуя шаблону, установленному в c++14
До c++17 рекомендуется наследование от std::iterator
, чтобы убрать скуку из шаблонной реализации итератора. Но устаревание потребует одну из этих вещей:
- Шаблон итератора теперь должен включать все необходимые
typedef
- Алгоритмы, работающие с итераторами, теперь должны будут использовать
auto
, а не зависеть от итератора для объявления типов. - Локи Астари предположил, что
std::iterator_traits
может быть обновлен для работы без наследования отstd::iterator
Может ли кто-нибудь просветить меня, какой из этих вариантов мне следует ожидать, поскольку я разрабатываю пользовательские итераторы с прицелом на c++17?
deprecating
означает, что он больше не рекомендуется, но по-прежнему будет поддерживаться по крайней мере для другой версии стандарта. - person Martin York   schedule 04.05.2016#include <c*>
, пока пишу на C++ из-за этого. Не говорите мне, что это было напрасно! - person Jonathan Mee   schedule 04.05.2016iterator_traits
не имеет различных определений типов членов, и нет смысла специализироваться наiterator_traits
- это больше типизация. - person T.C.   schedule 04.05.2016std::iterator
, потому что это удобно. Я буду продолжать использовать его, пока не смогу. - person Pete Becker   schedule 04.05.2016iterator_traits<Iterator>
typedefs должны быть определены]. - person T.C.   schedule 04.05.2016