Am 21. März st stimmte der Normenausschuss der deprecation von genehmigen std::iterator
vorgeschlagen in P0174 :
Die lange Folge von ungültigen Argumenten ist für den Leser viel weniger klar als die bloße
typedef
Angabe der erwarteten s in der Klassendefinition selbst. Dies ist der Ansatz des aktuellen Arbeitsentwurfs nach dem festgelegten Musterc ++ 14
Vor c ++ 17Die Vererbung von std::iterator
wurde ermutigt, die Langeweile bei der Implementierung des Iterator-Boilerplates zu beseitigen. Die Abwertung erfordert jedoch eines der folgenden Dinge:
- Ein Iterator-Boilerplate muss nun alle erforderlichen
typedef
s enthalten - Algorithmen, die mit Iteratoren arbeiten, müssen jetzt verwendet werden,
auto
anstatt vom Iterator abhängig zu sein, um Typen zu deklarieren - Loki Astari hat vorgeschlagen ,
std::iterator_traits
dass aktualisiert werden kann, um zu funktionieren, ohne von zu erbenstd::iterator
Kann mir jemand erklären, welche dieser Optionen ich erwarten sollte, wenn ich benutzerdefinierte Iteratoren mit Blick auf entwerfe c ++ 17 Kompatibilität?