[counted.iter.cust] # 24 Iterators library [[iterators]](./#iterators) ## 24.5 Iterator adaptors [[predef.iterators]](predef.iterators#counted.iter.cust) ### 24.5.7 Counted iterators [[iterators.counted]](iterators.counted#counted.iter.cust) #### 24.5.7.7 Customizations [counted.iter.cust] [🔗](#lib:iter_move,counted_iterator) `friend constexpr decltype(auto) iter_move(const counted_iterator& i) noexcept(noexcept(ranges::iter_move(i.current))) requires [input_iterator](iterator.concept.input#concept:input_iterator "24.3.4.9 Concept input_­iterator [iterator.concept.input]"); ` [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L6419) *Hardened preconditions*: i.length > 0 is true[.](#1.sentence-1) [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L6423) *Effects*: Equivalent to: return ranges​::​iter_move(i.current); [🔗](#lib:iter_swap,counted_iterator) `template<[indirectly_swappable](alg.req.ind.swap#concept:indirectly_swappable "24.3.7.4 Concept indirectly_­swappable [alg.req.ind.swap]") I2> friend constexpr void iter_swap(const counted_iterator& x, const counted_iterator& y) noexcept(noexcept(ranges::iter_swap(x.current, y.current))); ` [3](#3) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L6437) *Hardened preconditions*: Both x.length > 0 and y.length > 0 are true[.](#3.sentence-1) [4](#4) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L6441) *Effects*: Equivalent to ranges​::​iter_swap(x.current, y.current)[.](#4.sentence-1)