---
name: "std::counted_iterator"
section: "3cxx"
platform: "linux"
package: "libstdc++-12-doc"
version: "12.4.0-5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/std::counted_iterator/3cxx"
---

# std::counted\_iterator(3cxx)

An iterator adaptor that keeps track of the distance to the end.

## NAME

std::counted\_iterator\< \_It \> - An iterator adaptor that keeps track of the distance to the end.

## SYNOPSIS

`#include <iterator>`

Inherits std::\_\_detail::\_\_counted\_iter\_value\_type\< \_It \>, std::\_\_detail::\_\_counted\_iter\_concept\< \_It \>, and std::\_\_detail::\_\_counted\_iter\_cat\< \_It \>.

### Public Types

**using** **difference\_type** = iter\_difference\_t\< \_It \>\
 **using** **iterator\_type** = \_It\

### Public Member Functions

constexpr **counted\_iterator** (\_It \_\_i, iter\_difference\_t\< \_It \> \_\_n)\
 template\<**typename** \_It2 \> \
 requires convertible\_to\<const \_It2&, \_It\>constexpr **counted\_iterator** (const **counted\_iterator**\< \_It2 \> &\_\_x)"\
 constexpr \_It **base** () &&noexcept(is\_nothrow\_move\_constructible\_v\< \_It \>)\
 constexpr const \_It & **base** () const &noexcept\
 constexpr iter\_difference\_t\< \_It \> **count** () const noexcept\
 constexpr **decltype**(**auto**) **operator\*** () const noexcept(noexcept(\*\_M\_current))\
 constexpr **decltype**(**auto**) **operator\*** () noexcept(noexcept(\*\_M\_current))\
 constexpr **counted\_iterator** **operator+** (iter\_difference\_t\< \_It \> \_\_n) const\
 constexpr **counted\_iterator** & **operator++** ()\
 constexpr **decltype**(**auto**) **operator++** (int)\
 constexpr **counted\_iterator** **operator++** (int)\
 constexpr **counted\_iterator** & **operator+=** (iter\_difference\_t\< \_It \> \_\_n)\
 constexpr **counted\_iterator** **operator-** (iter\_difference\_t\< \_It \> \_\_n) const\
 constexpr **counted\_iterator** & **operator--** ()\
 constexpr **counted\_iterator** **operator--** (int)\
 constexpr **counted\_iterator** & **operator-=** (iter\_difference\_t\< \_It \> \_\_n)\
 constexpr **auto** **operator-\>** () const noexcept\
 template\<**typename** \_It2 \> \
 requires assignable\_from\<\_It&, const \_It2&\>constexpr **counted\_iterator** & **operator=** (const **counted\_iterator**\< \_It2 \> &\_\_x)"\
 constexpr **decltype**(**auto**) **operator\[\]** (iter\_difference\_t\< \_It \> \_\_n) const noexcept(noexcept(\_M\_current\[\_\_n\]))\

### Friends

constexpr iter\_rvalue\_reference\_t\< \_It \> **iter\_move** (const **counted\_iterator** &\_\_i) noexcept(noexcept(ranges::iter\_move(\_\_i.\_M\_current)))\
 template\<indirectly\_swappable\< \_It \> \_It2\> constexpr **void** **iter\_swap** (const **counted\_iterator** &\_\_x, const **counted\_iterator**\< \_It2 \> &\_\_y) noexcept(noexcept(ranges::iter\_swap(\_\_x.\_M\_current, \_\_y.\_M\_current)))\
 constexpr **counted\_iterator** **operator+** (iter\_difference\_t\< \_It \> \_\_n, const **counted\_iterator** &\_\_x)\
 template\<common\_with\< \_It \> \_It2\> constexpr iter\_difference\_t\< \_It2 \> **operator-** (const **counted\_iterator** &\_\_x, const **counted\_iterator**\< \_It2 \> &\_\_y)\
 constexpr iter\_difference\_t\< \_It \> **operator-** (const **counted\_iterator** &\_\_x, **default\_sentinel\_t**)\
 constexpr iter\_difference\_t\< \_It \> **operator-** (**default\_sentinel\_t**, const **counted\_iterator** &\_\_y)\
 template\<common\_with\< \_It \> \_It2\> constexpr strong\_ordering **operator\<=\>** (const **counted\_iterator** &\_\_x, const **counted\_iterator**\< \_It2 \> &\_\_y)\
 template\<common\_with\< \_It \> \_It2\> constexpr bool **operator==** (const **counted\_iterator** &\_\_x, const **counted\_iterator**\< \_It2 \> &\_\_y)\
 constexpr bool **operator==** (const **counted\_iterator** &\_\_x, **default\_sentinel\_t**)\

## Detailed Description

### template\<input\_or\_output\_iterator \_It\>

class std::counted\_iterator\< \_It \>"An iterator adaptor that keeps track of the distance to the end.

## Author

Generated automatically by Doxygen for libstdc++ from the source code.
