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