Korzyści płynące z używania traits<T>

0

O ile szablony typu is_move_assignable<T>, is_scalar<T>, itp. są pomocne i proste do zrozumienie to nie mogę rozgryźć celu istnienia np. iterator_traits<T>.

Tworząc iteratory tak czy siak trzeba pododawać odpowiednie using, żeby można było je wykorzystać w algorytmach, więc dlaczego przy delegowaniu tagów używa się
typename iterator_traits< T >::iterator_category
zamiast bezpośrednio
typename T::iterator_category ?

Coś mi umknęło?

4

Dla T = int*, czym jest T::iterator_category?

0

To jest po to, że jak definiujesz sobie algorytm to dzięki iterator_traits<T> jesteś w stanie obsłużyć zarówno pełnoprawne iteratory jak i wskaźniki.
Przydatne bardziej przed C++11 niż obecnie.
https://wandbox.org/permlink/ytcnUZI35MGu6kXz

Inny powód do korzystania z tego to użycie innego algorytmu dla danego problemu zależnie od typu iteratora. W dokumentacji jest przykład.

0

No tak, zapomniałem o tablicach...
Wszystko jasne. Podziękował :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1