From 527b5e3caa015a80792784e1b835c0db6f847aa2 Mon Sep 17 00:00:00 2001
From: Jeremy Siek
If CategoryOrTraversal is not use_default then the member iterator_category is CategoryOrTraversal. Otherwise, if -Incrementable is a numberic type iterator_category is a -type convertible to random_access_iterator_tag. Otherwise, -iterator_category is unspecified, and the counting_iterator -specialization models the same iterator traversal concepts modeled -by Incrementable.
+numeric_limits<Incrementable>::is_specialized, then +iterator_category is a type convertible to +random_access_iterator_tag. Otherwise, iterator_category is +unspecified, and the counting_iterator specialization models the +same iterator traversal concepts modeled by Incrementable.Incrementable must be Default Constructible, Copy -Constructible, and Assignable.
+The Incrementable argument shall be Copy Constructible and Assignable.
If iterator_category is convertible to forward_iterator_tag or forward_traversal_tag, the following must be well-formed:
@@ -136,7 +135,9 @@ i < j;counting_iterator models
Specializations of counting_iterator model Readable Lvalue Iterator. In addition, they model the concepts corresponding to the -iterator tags to which their iterator_category is convertible.
+iterator tags to which their iterator_category is convertible and +also corresponding to CategoryOrTraversal when +CategoryOrTraversal is an iterator tag (and not use_default).