STD::COMMON_ITERATOR(3cxx)
π std::common_iterator< _It, _Sent > π
okay so bestie, this is the 3cxx manual page for std::common_iterator< _It, _Sent > from libstdc++ β manual name folded in near the top instead of copied as the header, because we're cute and also accurate. β¨
πΈ NAME πΈ
std::common_iterator< _It, _Sent > β literally An iterator/sentinel adaptor for representing a non-common range. That's the official vibe. π¦
β¨ SYNOPSIS β¨
#include <iterator>
π Public Member Functions π
bestie, here's the full public roster, signatures untouched and in order. No merging, no skipping, no "I'll mention one and call it a day". π
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 >
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 π«Ά
and these are the friends β lowkey iconic, highkey exact:
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 >
the description is exactly this: An iterator/sentinel adaptor for representing a non-common range. tiny note: the raw page has a " tucked right after _Sent > before that sentence, so that's the formatting artifact I'm acknowledging, not a fact I'm changing. π
π AUTHOR π
Generated automatically by Doxygen for libstdc++ from the source code.
bye bestie π β footer/source/version sign-off: libststd::common_ite...r< _It, _Sent >(3cxx); source is libstdc++, generated automatically by Doxygen, and no separate date is shown in that footer, so we're not inventing one. π
π¦ where this page comes from
- ubuntu noble: libstdc++-14-doc 14-20240412-0ubuntu1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms