Zarówno modele irange
, jak i counting_range
modelują zakres dostępu losowego dla typów całkowitych. Jako counting_range
s Dokumentacja wskazuje jej kategorii iteracyjnej określa się zgodnie z następującym algorytmem:
if (CategoryOrTraversal is not use_default)
return CategoryOrTraversal
else if (numeric_limits<Incrementable>::is_specialized)
return iterator-category(random_access_traversal_tag, Incrementable, const Incrementable&)
else
return iterator-category(iterator_traversal<Incrementable>::type, Incrementable, const Incrementable&)
Dlatego prostych zakresach, takich jak boost::irange(0, 10)
i boost::counting_range(0, 10)
jest skutecznie różnicy (oprócz rodzajów każdym przedziale, z kierunek!).
Jednakże irange
obsługuje iteracji o różnej wielkości kroku, na przykład, boost::irange(0, 10, 2)
i counting_range
obsługuje typów, które są tylko incrementable i nie w pełni AN całkowitą.
To był niesamowicie scarisome przykład tego, jak dezinformacja może być prezentowana jako autorytatywny i recenzowany fakt, na SO. –