---
name: "std::common_iterator"
section: "3"
platform: "linux"
package: "gcc"
version: "16.2.1+r23+gd564253eb6c8-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/std::common_iterator"
---

# std::common\_iterator(3)

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 \>)\
 **common\_iterator** (common\_iterator &&)=default\
 constexpr **common\_iterator** (common\_iterator &&\_\_x) noexcept(\_S\_noexcept\< \_It, \_Sent \>())\
 **common\_iterator** (const common\_iterator &)=default\
 constexpr **common\_iterator** (const common\_iterator &\_\_x) noexcept(\_S\_noexcept\< const \_It &, const \_Sent & \>())\
 template\<typename \_It2, typename \_Sent2\> 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\> 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\> constexpr iter\_difference\_t\< \_It2 \> **operator-** (const common\_iterator &\_\_x, const common\_iterator\< \_It2, \_Sent2 \> &\_\_y)\
 template\<typename \_It2, sentinel\_for\< \_It \> \_Sent2\> constexpr bool **operator==** (const common\_iterator &\_\_x, const common\_iterator\< \_It2, \_Sent2 \> &\_\_y)\
 template\<typename \_It2, sentinel\_for\< \_It \> \_Sent2\> 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.
