home | help
std::ranges::common_range(3)   C++ Standard Libary  std::ranges::common_range(3)

NAME
     std::ranges::common_range - std::ranges::common_range

Synopsis
	Defined in header <ranges>
	template< class T >

	  concept			  common_range			       =
     (since C++20)

	    ranges::range<T> && std::same_as<ranges::iterator_t<T>,
	ranges::sentinel_t<T>>;

	The  common_range  concept  is	a  refinement	of   range   for   which
     std::ranges::begin() and
	std::ranges::end()  return the same type (e.g. all standard library con-
     tainers).

Example
     // Run this code

      #include <ranges>

      struct A {
	  char* begin();
	  char* end();
      };
      static_assert( std::ranges::common_range<A> );

      struct B {
	  char* begin();
	  bool end();
      };  // not a common_range: begin/end have different types
      static_assert( not std::ranges::common_range<B> );

      struct C {
	  char* begin();
      };  // not a common_range, not even a range: has no end()
      static_assert( not std::ranges::common_range<C> );

      int main() { }

See also
	ranges::common_view converts a view into a common_range
	views::common	    (class template) (range adaptor object)
	(C++20)

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

home | help