VCCC  2024.05
VisualCamp Common C++ library
cartesian_product_view< First, Vs >::iterator< Const > Class Template Reference

#include </home/jarvis/actions-runner/jarvis-vccc-2/_work/vccc/vccc/include/vccc/__ranges/views/cartesian_product_view.hpp>

Public Types

using iterator_category = input_iterator_tag
 
using iterator_concept = std::conditional_t< detail::cartesian_product_is_random_access< Const, First, Vs... >::value, random_access_iterator_tag, std::conditional_t< detail::cartesian_product_is_bidirectional< Const, First, Vs... >::value, bidirectional_iterator_tag, std::conditional_t< forward_range< maybe_const< Const, First > >::value, forward_iterator_tag, input_iterator_tag > >>
 
using value_type = std::tuple< range_value_t< maybe_const< Const, First > >, range_value_t< maybe_const< Const, Vs > >... >
 
using reference = std::tuple< range_reference_t< maybe_const< Const, First > >, range_reference_t< maybe_const< Const, Vs > >... >
 
using difference_type = int
 
using pointer = void
 

Public Member Functions

 iterator ()=default
 
template<bool AntiConst, std::enable_if_t< conjunction< bool_constant<((Const !=AntiConst) &&Const)>, convertible_to< iterator_t< First >, iterator_t< const First >>, convertible_to< iterator_t< Vs >, iterator_t< const Vs >>... >::value, int > = 0>
constexpr iterator (iterator< AntiConst > i)
 
constexpr auto operator* () const
 
template<typename First2 = First, std::enable_if_t< detail::cartesian_product_is_random_access< Const, First2, Vs... >::value, int > = 0>
constexpr reference operator[] (difference_type n) const
 
template<std::size_t N = sizeof...(Vs)>
constexpr void next ()
 
template<std::size_t N = sizeof...(Vs)>
constexpr void prev ()
 
template<typename Tuple >
constexpr difference_type distance_from (const Tuple &t) const
 
constexpr iteratoroperator++ ()
 
template<typename First2 = First, std::enable_if_t< forward_range< maybe_const< Const, First2 >>::value==false, int > = 0>
constexpr void operator++ (int)
 
template<typename First2 = First, std::enable_if_t< forward_range< maybe_const< Const, First2 >>::value, int > = 0>
constexpr iterator operator++ (int)
 
template<typename First2 = First, std::enable_if_t< detail::cartesian_product_is_bidirectional< Const, First2, Vs... >::value, int > = 0>
constexpr iteratoroperator-- ()
 
template<typename First2 = First, std::enable_if_t< detail::cartesian_product_is_bidirectional< Const, First2, Vs... >::value, int > = 0>
constexpr iterator operator-- (int)
 
template<typename First2 = First, std::enable_if_t< detail::cartesian_product_is_random_access< Const, First2, Vs... >::value, int > = 0>
constexpr iteratoroperator+= (difference_type n)
 
template<typename First2 = First, std::enable_if_t< detail::cartesian_product_is_random_access< Const, First2, Vs... >::value, int > = 0>
constexpr iteratoroperator-= (difference_type n)
 

Friends

class cartesian_product_view
 
template<typename First2 = First, std::enable_if_t< equality_comparable< iterator_t< maybe_const< Const, First2 >>>::value, int > = 0>
constexpr friend bool operator== (const iterator &x, const iterator &y)
 
template<typename First2 = First, std::enable_if_t< equality_comparable< iterator_t< maybe_const< Const, First2 >>>::value, int > = 0>
constexpr friend bool operator!= (const iterator &x, const iterator &y)
 
template<typename First2 = First, std::enable_if_t< equality_comparable< iterator_t< maybe_const< Const, First2 >>>::value, int > = 0>
constexpr friend bool operator== (const iterator &x, default_sentinel_t)
 
template<typename First2 = First, std::enable_if_t< equality_comparable< iterator_t< maybe_const< Const, First2 >>>::value, int > = 0>
constexpr friend bool operator!= (const iterator &x, default_sentinel_t)
 
template<typename First2 = First, std::enable_if_t< equality_comparable< iterator_t< maybe_const< Const, First2 >>>::value, int > = 0>
constexpr friend bool operator== (default_sentinel_t, const iterator &x)
 
template<typename First2 = First, std::enable_if_t< equality_comparable< iterator_t< maybe_const< Const, First2 >>>::value, int > = 0>
constexpr friend bool operator!= (default_sentinel_t, const iterator &x)
 
template<typename First2 = First, std::enable_if_t< detail::cartesian_product_is_random_access< Const, First2, Vs... >::value, int > = 0>
constexpr friend iterator operator+ (const iterator &i, difference_type n)
 
template<typename First2 = First, std::enable_if_t< detail::cartesian_product_is_random_access< Const, First2, Vs... >::value, int > = 0>
constexpr friend iterator operator+ (difference_type n, const iterator &i)
 
template<typename First2 = First, std::enable_if_t< detail::cartesian_product_is_random_access< Const, First2, Vs... >::value, int > = 0>
constexpr friend iterator operator- (const iterator &i, difference_type n)
 
template<typename First2 = First, std::enable_if_t< detail::cartesian_is_sized_sentinel< Const, iterator_t, First2, Vs... >::value, int > = 0>
constexpr friend difference_type operator- (const iterator &i, const iterator &j)
 
template<typename First2 = First, std::enable_if_t< detail::cartesian_is_sized_sentinel< Const, sentinel_t, First2, Vs... >::value, int > = 0>
constexpr friend difference_type operator- (const iterator &i, default_sentinel_t)
 
template<typename First2 = First, std::enable_if_t< detail::cartesian_is_sized_sentinel< Const, sentinel_t, First2, Vs... >::value, int > = 0>
constexpr friend difference_type operator- (default_sentinel_t s, const iterator &i)
 
constexpr friend auto iter_move (const iterator &i) noexcept(noexcept(vccc::tuple_transform(i.current_, ranges::iter_move)) &&conjunction< std::is_nothrow_move_constructible< range_rvalue_reference_t< maybe_const< Const, First > >>, std::is_nothrow_move_constructible< range_rvalue_reference_t< maybe_const< Const, Vs > >>... >::value)
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, indirectly_swappable< iterator_t< maybe_const< Const, First >> >, indirectly_swappable< iterator_t< maybe_const< Const, Vs >> >... >::value, int > = 0>
constexpr friend void iter_swap (const iterator &x, const iterator &y) noexcept(noexcept(x.iter_swap_impl(y)))
 

Member Typedef Documentation

◆ difference_type

using difference_type = int

◆ iterator_category

◆ iterator_concept

using iterator_concept = std::conditional_t< detail::cartesian_product_is_random_access<Const, First, Vs...>::value, random_access_iterator_tag, std::conditional_t< detail::cartesian_product_is_bidirectional<Const, First, Vs...>::value, bidirectional_iterator_tag, std::conditional_t< forward_range<maybe_const<Const, First> >::value, forward_iterator_tag, input_iterator_tag > >>

◆ pointer

using pointer = void

◆ reference

using reference = std::tuple< range_reference_t<maybe_const<Const, First> >, range_reference_t<maybe_const<Const, Vs > >... >

◆ value_type

using value_type = std::tuple< range_value_t<maybe_const<Const, First> >, range_value_t<maybe_const<Const, Vs > >... >

Constructor & Destructor Documentation

◆ iterator() [1/2]

iterator ( )
default

◆ iterator() [2/2]

constexpr iterator ( iterator< AntiConst >  i)
inlineconstexpr

Member Function Documentation

◆ distance_from()

constexpr difference_type distance_from ( const Tuple &  t) const
inlineconstexpr

◆ next()

constexpr void next ( )
inlineconstexpr

◆ operator*()

constexpr auto operator* ( ) const
inlineconstexpr

◆ operator++() [1/3]

constexpr iterator& operator++ ( )
inlineconstexpr

◆ operator++() [2/3]

constexpr void operator++ ( int  )
inlineconstexpr

◆ operator++() [3/3]

constexpr iterator operator++ ( int  )
inlineconstexpr

◆ operator+=()

constexpr iterator& operator+= ( difference_type  n)
inlineconstexpr

◆ operator--() [1/2]

constexpr iterator& operator-- ( )
inlineconstexpr

◆ operator--() [2/2]

constexpr iterator operator-- ( int  )
inlineconstexpr

◆ operator-=()

constexpr iterator& operator-= ( difference_type  n)
inlineconstexpr

◆ operator[]()

constexpr reference operator[] ( difference_type  n) const
inlineconstexpr

◆ prev()

constexpr void prev ( )
inlineconstexpr

Friends And Related Function Documentation

◆ cartesian_product_view

friend class cartesian_product_view
friend

◆ iter_move

constexpr friend auto iter_move ( const iterator< Const > &  i)
friend

◆ iter_swap

constexpr friend void iter_swap ( const iterator< Const > &  x,
const iterator< Const > &  y 
)
friend

◆ operator!= [1/3]

constexpr friend bool operator!= ( const iterator< Const > &  x,
const iterator< Const > &  y 
)
friend

◆ operator!= [2/3]

constexpr friend bool operator!= ( const iterator< Const > &  x,
default_sentinel_t   
)
friend

◆ operator!= [3/3]

constexpr friend bool operator!= ( default_sentinel_t  ,
const iterator< Const > &  x 
)
friend

◆ operator+ [1/2]

constexpr friend iterator operator+ ( const iterator< Const > &  i,
difference_type  n 
)
friend

◆ operator+ [2/2]

constexpr friend iterator operator+ ( difference_type  n,
const iterator< Const > &  i 
)
friend

◆ operator- [1/4]

constexpr friend difference_type operator- ( const iterator< Const > &  i,
const iterator< Const > &  j 
)
friend

◆ operator- [2/4]

constexpr friend difference_type operator- ( const iterator< Const > &  i,
default_sentinel_t   
)
friend

◆ operator- [3/4]

constexpr friend iterator operator- ( const iterator< Const > &  i,
difference_type  n 
)
friend

◆ operator- [4/4]

constexpr friend difference_type operator- ( default_sentinel_t  s,
const iterator< Const > &  i 
)
friend

◆ operator== [1/3]

constexpr friend bool operator== ( const iterator< Const > &  x,
const iterator< Const > &  y 
)
friend

◆ operator== [2/3]

constexpr friend bool operator== ( const iterator< Const > &  x,
default_sentinel_t   
)
friend

◆ operator== [3/3]

constexpr friend bool operator== ( default_sentinel_t  ,
const iterator< Const > &  x 
)
friend

The documentation for this class was generated from the following file: