---
name: "std::common_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::common_iterator/3cxx"
---

# std::common\_iterator(3cxx)

An iterator/sentinel adaptor for representing a non-common range.

## NAME

std::common\_iterator\< \_It, \_Sent \> - An iterator/sentinel adaptor for representing a non-common range.

## SYNOPSIS

`#include <iterator>`

### Public Member Functions

constexpr **common\_iterator** (\_It \_\_i) noexcept(is\_nothrow\_move\_constructible\_v\< \_It \>)\
 constexpr **common\_iterator** (\_Sent **\_\_s**) noexcept(is\_nothrow\_move\_constructible\_v\< \_Sent \>)\
 constexpr **common\_iterator** (**common\_iterator** &&\_\_x) noexcept(\_S\_noexcept\< \_It, \_Sent \>())\
 constexpr **common\_iterator** (const **common\_iterator** &\_\_x) noexcept(\_S\_noexcept\< const \_It &, const \_Sent & \>())\
 template\<**typename** \_It2 , **typename** **\_Sent2** \> \
 requires convertible\_to\<const \_It2&, \_It\> && convertible\_to\<const **\_Sent2**&, \_Sent\>constexpr **common\_iterator** (const **common\_iterator**\< \_It2, **\_Sent2** \> &\_\_x) noexcept(\_S\_noexcept\< const \_It2 &, const **\_Sent2** & \>())"\
 constexpr **decltype**(**auto**) **operator\*** ()\
 constexpr **decltype**(**auto**) **operator\*** () const\
 constexpr **common\_iterator** & **operator++** ()\
 constexpr **decltype**(**auto**) **operator++** (int)\
 constexpr **auto** **operator-\>** () const\
 constexpr **common\_iterator** & **operator=** (**common\_iterator** &&)=**default**\
 constexpr **common\_iterator** & **operator=** (**common\_iterator** &&\_\_x) noexcept(is\_nothrow\_move\_assignable\_v\< \_It \> &&is\_nothrow\_move\_assignable\_v\< \_Sent \> &&is\_nothrow\_move\_constructible\_v\< \_It \> &&is\_nothrow\_move\_constructible\_v\< \_Sent \>)\
 constexpr **common\_iterator** & **operator=** (const **common\_iterator** &)=**default**\
 constexpr **common\_iterator** & **operator=** (const **common\_iterator** &\_\_x) noexcept(is\_nothrow\_copy\_assignable\_v\< \_It \> &&is\_nothrow\_copy\_assignable\_v\< \_Sent \> &&is\_nothrow\_copy\_constructible\_v\< \_It \> &&is\_nothrow\_copy\_constructible\_v\< \_Sent \>)\
 template\<**typename** \_It2 , **typename** **\_Sent2** \> \
 requires convertible\_to\<const \_It2&, \_It\> && convertible\_to\<const **\_Sent2**&, \_Sent\> && assignable\_from\<\_It&, const \_It2&\> && assignable\_from\<\_Sent&, const **\_Sent2**&\>constexpr **common\_iterator** & **operator=** (const **common\_iterator**\< \_It2, **\_Sent2** \> &\_\_x) noexcept(is\_nothrow\_constructible\_v\< \_It, const \_It2 & \> &&is\_nothrow\_constructible\_v\< \_Sent, const **\_Sent2** & \> &&is\_nothrow\_assignable\_v\< \_It &, const \_It2 & \> &&is\_nothrow\_assignable\_v\< \_Sent &, const **\_Sent2** & \>)"\

### Friends

constexpr iter\_rvalue\_reference\_t\< \_It \> **iter\_move** (const **common\_iterator** &\_\_i) noexcept(noexcept(ranges::iter\_move(**std::declval**\< const \_It & \>())))\
 template\<indirectly\_swappable\< \_It \> \_It2, **typename** **\_Sent2** \> constexpr **void** **iter\_swap** (const **common\_iterator** &\_\_x, const **common\_iterator**\< \_It2, **\_Sent2** \> &\_\_y) noexcept(noexcept(ranges::iter\_swap(**std::declval**\< const \_It & \>(), **std::declval**\< const \_It2 & \>())))\
 template\<sized\_sentinel\_for\< \_It \> \_It2, sized\_sentinel\_for\< \_It \> \_Sent2\> \
 requires sized\_sentinel\_for\<\_Sent, \_It2\>constexpr iter\_difference\_t\< \_It2 \> **operator-** (const **common\_iterator** &\_\_x, const **common\_iterator**\< \_It2, **\_Sent2** \> &\_\_y)"\
 template\<**typename** \_It2 , sentinel\_for\< \_It \> \_Sent2\> \
 requires sentinel\_for\<\_Sent, \_It2\>constexpr bool **operator==** (const **common\_iterator** &\_\_x, const **common\_iterator**\< \_It2, **\_Sent2** \> &\_\_y)"\
 template\<**typename** \_It2 , sentinel\_for\< \_It \> \_Sent2\> \
 requires sentinel\_for\<\_Sent, \_It2\> && equality\_comparable\_with\<\_It, \_It2\>constexpr bool **operator==** (const **common\_iterator** &\_\_x, const **common\_iterator**\< \_It2, **\_Sent2** \> &\_\_y)"\

## Detailed Description

### template\<input\_or\_output\_iterator \_It, sentinel\_for\< \_It \> \_Sent\>

requires (!same\_as\<\_It, \_Sent\>) && copyable\<\_It\>\
 class std::common\_iterator\< \_It, \_Sent \>"An iterator/sentinel adaptor for representing a non-common range.

## Author

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