home | help
std::ranges...ew::iterator(3)  C++ Standard Libary std::ranges...ew::iterator(3)

NAME
     std::ranges::cartesian_product_view::iterator     -     std::ranges::carte-
     sian_product_view::iterator

Synopsis
	template< bool Const >	(since C++23)
	class /*iterator*/	(exposition only*)

	The return type of cartesian_product_view::begin, and of cartesian_prod-
     uct_view::end
	when the underlying view V is a common_range.

	The type /*iterator*/<true> is returned  by  the  const-qualified  over-
     loads. The type
	/*iterator*/<false> is returned by the non-const-qualified overloads.

Member types
	Member type	  Definition
	iterator_category std::input_iterator_tag
			    * std::random_access_iterator_tag, if
			      /*cartesian-product-is-random-access*/<Const,
     First, Vs...> is
			      modeled,
			    * std::bidirectional_iterator_tag, if
	iterator_concept	   /*cartesian-product-is-bidirectional*/<Const,
     First, Vs...> is
			      modeled,
			    * std::forward_iterator_tag, if
			      /*maybe-const*/<Const,	First>	  models    for-
     ward_range,
			    * std::input_iterator_tag otherwise
	value_type		       std::tuple<ranges::range_value_t</*maybe-
     const*/<Const, First>>,
				     ranges::range_value_t</*maybe-
     const*/<Const, Vs>>...>;
			  std::tuple<ranges::range_reference_t</*maybe-
     const*/<Const,
	reference	  First>>,
				     ranges::range_reference_t</*maybe-
     const*/<Const,
			  Vs>>...>;
			  An  implementation-defined  signed-integer-like   type
     (maybe the
	difference_type   smallest of such types), which is sufficiently wide to
     store the
			  product of the maximum sizes of all underlying ranges,
     if such
			  type exists.
	Parent (private)  /*maybe-const*/<Const, cartesian_product_view>.
			  (exposition-only member type*)

	Data members

	Member object  Definition
	parent_ 	A  pointer  of type Parent to the parent cartesian_prod-
     uct_view.
	(private)      (exposition-only member object*)
		       A tuple of iterators to the current  underlying	elements
     of type
	current_	    std::tuple<ranges::iterator_t</*maybe-const*/<Const,
     First>>,
	(private)		       ranges::iterator_t</*maybe-const*/<Const,
     Vs>>...>.
		       (exposition-only member object*)

Member functions
	constructor	constructs an iterator
	(C++23) 	(public member function)
	operator*	accesses the element
	(C++23) 	(public member function)
	operator[]	accesses an element by index
	(C++23) 	(public member function)
	operator++
	operator++(int)
	operator--	advances or decrements the underlying iterator
	operator--(int) (public member function)
	operator+=
	operator-=
	(C++23)
	next		advances the iterator
	(C++23) 	(exposition-only member function*)
	prev		decrements the iterator
	(C++23) 	(exposition-only member function*)
	distance_from	returns the distance between two iterators
	(C++23) 	(exposition-only member function*)

Non-member functions
	operator==  compares the underlying iterators
	operator<=> (function)
	(C++23)
	operator+   performs iterator arithmetic
	operator-   (function)
	(C++23)
	iter_move   casts the result of dereferencing the underlying iterator to
     its
	(C++23)     associated rvalue reference type
		    (function)
	iter_swap   swaps underlying pointed-to elements
	(C++23)     (function)

Example
	 This section is incomplete
	 Reason: no example

References
	  * C++23 standard (ISO/IEC 14882:2023):

	  * 26.7.32.3 Class template cartesian_product_view::iterator
	    [range.cartesian.iterator]

See also
Category:
	  * Todo no example

http://cppreference.com 	   2024.06.10	   std::ranges...ew::iterator(3)

home | help